2009-06-28 8 views
1

J'ai un problème lors de la conversion d'une chaîne dont la valeur est dd.mm.yyyy-DateTime en C#problème dans la conversion Datetime en C#

string OriginalDateFormat = "28.06.2009"; 
DateTime dt= Convert.ToDateTime(OriginalDateFormat); 

Lancer une exception "String was not recognized as a valid DateTime."

Mais si elle est en mm.dd.yyyy alors il est en cours d'exécution bien.

Je googlé et ai beaucoup de sites, mais en vain

Toute idée?

Merci d'avance.

+1

Avez-vous regardé http://msdn.microsoft.com/en-u s/library/system.datetime.aspx? Google n'est pas le meilleur outil pour quelque chose comme ça. –

Répondre

8

Utilisez DateTime.ParseExact et spécifiez la chaîne de format exact:

DateTime dt = DateTime.ParseExact("28.06.2009", "dd'.'MM'.'yyyy", 
            CultureInfo.InvariantCulture); 

Si c'est la valeur est de l'entrée d'utilisateur, vous voulez probablement utiliser DateTime.TryParseExact si vous pouvez gérer l'échec avec élégance:

DateTime dt; 
if (DateTime.TryParseExact("28.06.2009", "dd'.'MM'.'yyyy", 
         CultureInfo.InvariantCulture, 
         DateTimeStyles.None, // Default formatting options 
         out dt)) 
{ 
    Console.WriteLine("Successfully parsed {0}", dt); 
} 
else 
{ 
    Console.WriteLine("Did not recognise date"); 
} 
+0

Battez-moi à elle ;-p –

+0

Merci pour la solution. Génial –

3

Je pense que c'est un problème avec la culture ... Le format que vous avez spécifié est (je pense) GB et la culture par défaut est US. Vous devrez également spécifier la culture.

Essayez plutôt ceci:

IFormatProvider culture = new CultureInfo("en-US", true);//en-Us or en-GB not sure 

DateTime dt = DateTime.Parse(p, culture, DateTimeStyles.AssumeLocal); 
+0

Merci pour l'idée. Aidé –