Je veux vérifier si un string
contient des dates telles que 1/01/2000
et 10/01/2000
dans dd/MM/yyyy
format.
Jusqu'à présent, j'ai essayé cela.
DateTime dDate = DateTime.Parse(inputString);
string.Format("{0:d/MM/yyyy}", dDate);
Mais comment puis-je vérifier si ce format est correct pour throw an exception
?
string inputString = "2000-02-02";
DateTime dDate;
if (DateTime.TryParse(inputString, out dDate))
{
String.Format("{0:d/MM/yyyy}", dDate);
}
else
{
Console.WriteLine("Invalid"); // <-- Control flow goes here
}
vous pouvez utiliser DateTime.ParseExact
avec la chaîne de format
DateTime dt = DateTime.ParseExact(inputString, formatString, System.Globalization.CultureInfo.InvariantCulture);
Ci-dessus lèvera une exception si la chaîne donnée n'est pas dans un format donné.
utilisation DateTime.TryParseExact
si vous n'avez pas besoin d'exception en cas de format incorrect mais vous pouvez vérifier la valeur de retour de cette méthode pour déterminer si l'analyse de la valeur a réussi ou non.
Je pense qu'une des solutions est d'utiliser DateTime.ParseExact ou DateTime.TryParseExact
DateTime.ParseExact(dateString, format, provider);
source: http://msdn.Microsoft.com/en-us/library/w2sa9yss.aspx
https://msdn.Microsoft.com/es-es/library/h9b85w22 (v = vs.110) .aspx
string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
"5/1/2009 6:32:00", "05/01/2009 06:32",
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"};
DateTime dateValue;
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
Essaye ça
DateTime dDate;
dDate = DateTime.TryParse(inputString);
String.Format("{0:d/MM/yyyy}", dDate);
voir ce lien pour plus d'informations. http://msdn.Microsoft.com/en-us/library/ch92fbc1.aspx
Utilisez un tableau de format de dates valide, vérifiez docs :
string[] formats = { "d/MM/yyyy", "dd/MM/yyyy" };
DateTime parsedDate;
var isValidFormat= DateTime.TryParseExact(inputString, formats, new CultureInfo("en-US"), DateTimeStyles.None, out parsedDate);
if(isValidFormat)
{
string.Format("{0:d/MM/yyyy}", parsedDate);
}
else
{
// maybe throw an Exception
}
vous pouvez toujours essayer:
Regex r = new Regex(@"\d{2}/\d{2}/\d{4}");
r.isMatch(inputString);
cela vérifiera que la chaîne est au format "02/02/2002" vous aurez peut-être besoin d'un peu plus si vous voulez vous assurer que c'est une date valide comme jj/mm/aaaa