2008-10-24 8 views

Répondre

12

Utilisation DateTime.ParseExact:

string str = "24/10/2008"; 
DateTime dt = DateTime.ParseExact(str, "dd/MM/yyyy", 
            Thread.CurrentThread.CurrentCulture); 

(Vous devriez considérer ce que la culture que vous voulez vraiment l'analyser dans, il est vrai.)

EDIT: D'autres réponses ont spécifié "null" comme troisième paramètre - ce est équivalent à utiliser Thread.CurrentThread.CurrentCulture.

Pour les autres formats, voir "Custom Date and Time Format Strings" dans MSDN.

0

Essayez quelque chose comme

DateTime date = System.DateTime.ParseExact(str, "dd/MM/yyyy", null); 

Pour le temps cela pourrait fonctionner

DateTime date = System.DateTime.ParseExact(str, "HH:mm:ss", null); 
0
string str = "24/10/2008"; 
DateTime dt = Convert.ToDateTime(str); 
4

Si vous ne connaissez pas le format, utilisez:

DateTime d = DateTime.Parse(dateString); 

Cette tente de analyser la représentation sous forme de chaîne d'une date et heure en utilisant le pour règles de matage de la culture actuelle (par ex. Anglais (US) "en-US", allemand "DE-DE", ...). Il essaie d'ignorer les données non reconnues, et remplit les valeurs manquantes pour l'année, le mois et le jour avec la date actuelle (si l'analyse seulement une chaîne contenant l'heure par exemple).

Si vous savez que la culture utilisée de la chaîne est différent de celui en cours, vous pouvez spécifier la culture à utiliser:

CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); 
DateTime d = DateTime.Parse(dateString, culture); 

Vous devez AllWays suround la conversion par un bloc try-catch depuis la La chaîne doit être conforme à un modèle reconnu. Alternativement, vous pouvez également tester la validité de la chaîne avec la méthode DateTime.TryParse(dateString, out dateTime) qui renvoie true en cas de succès et le résultat en dateTime; ou faux sinon.

Si vous connaissez le format exact, vous pouvez utiliser

DateTime d = DateTime.ParseExact(dateString, "dd/MM/yyyy", null); 

(Voir Custom Date and Time Format Strings à partir du site MSDN pour d'autres chaînes de format).

3

Je suggère également de regarder DateTime.TryParse si vous n'êtes pas sûr du format de la chaîne de date. De cette façon, vous pouvez éviter de passer des exceptions très coûteuses dans la routine Parse.

Je voudrais aussi deuxième recommandation de Jon Skeet d'utiliser DateTime.ParseExact si vous faites savent exactement quel format la date sera, à chaque fois.

+1

Il existe également .TryParseExact(), pour tirer le meilleur parti des deux mondes. –