Vous devez utiliser DateTime.ParseExact
avec le format "dd/MM/yyyy"
DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
C'est plus sûr si vous utilisez d/M/yyyy
pour le format, car cela permet de gérer les jours/mois à un chiffre et à deux chiffres. Mais cela dépend vraiment si vous attendez des valeurs à un ou deux chiffres.
Votre format de date day/Month/Year
peut être un format de date acceptable pour certaines cultures. Par exemple, pour la culture canadienne en-CA
DateTime.Parse
fonctionnerait comme suit :
DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
Ou
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture
Les deux lignes ci-dessus fonctionneraient parce que le format de la chaîne de caractères est acceptable pour en-CA
la culture. Puisque vous ne fournissez aucune culture à votre DateTime.Parse
votre culture actuelle est utilisée pour l'analyse syntaxique et ne prend pas en charge le format de date. Pour en savoir plus, consultez DateTime.Parse .
Une autre méthode d'analyse syntaxique consiste à utiliser DateTime.TryParseExact
DateTime dt;
if (DateTime.TryParseExact("24/01/2013",
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//valid date
}
else
{
//invalid date
}
El TryParse
dans le cadre du .Net ne lève pas d'exception en cas de valeurs non valides, mais renvoie un message de type bool
valeur indiquant le succès ou l'échec de l'analyse syntaxique.
Avis que j'ai utilisé seul d
y M
pour le jour et le mois respectivement. Simple d
y M
fonctionne pour le jour et le mois à un ou deux chiffres. Ainsi, pour le format d/M/yyyy
Les valeurs valides pourraient être :
- "24/01/2013"
- "24/1/2013"
- "4/12/2013" //4 décembre 2013
- "04/12/2013"
Pour une lecture plus approfondie, vous devriez voir : Chaînes de format de date et d'heure personnalisées