Convertir une chaîne en .net


8

Je lis du texte à partir d'un fichier plat dans C# et j'ai besoin de tester si certaines valeurs sont des dates. Ils peuvent être au format AAAAMMJJ ou au format MM/JJ/AA. Quel est le moyen le plus simple de le faire dans .Net?

26
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
var Result = DateTime.ParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None); 

ou

DateTime result; 
string[] formats = {"yyyyMMdd", "MM/dd/yy"}; 
DateTime.TryParseExact(input, formats, CultureInfo.CurrentCulture, DateTimeStyles.None, out result); 

Plus d'informations dans la documentation MSDN sur ParseExact et TryParseExact.

  0

C'est mieux que le mien. Je ne savais pas que vous pouviez faire un tableau de chaînes pour les formats. Très agréable! 23 sept.. 082008-09-23 19:42:00

  0

Encore mieux! Juste ce dont j'avais besoin. 23 sept.. 082008-09-23 19:57:04

  0

Assurez-vous de vérifier la valeur de retour de DateTime.TryParseExact (...) car ce sera la seule façon de savoir si elle a réussi ou non. 24 sept.. 082008-09-24 00:11:22


3

DateTime.TryParse méthode

  0

Puisque je ne peux pas éditer votre réponse, j'ai pensé qu'il pourrait aider à fournir un lien vers l'article de MSDN pour cette méthode. http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx 23 sept.. 082008-09-23 19:39:50

  0

[@Yadyn]: j'ai pensé que l'intellisense serait suffisant, mais ok j'ai ajouté le lien pour être complet - merci! 25 sept.. 082008-09-25 18:38:24


0

Vous pouvez également faire Convert.ToDateTime

pas sûr que les avantages des deux


0

L'utilisation TryParse ne lancera pas d'exception si elle échoue. En outre, TryParse renvoie True/False, indiquant le succès de la conversion.

Cordialement ...


3

vous pouvez également essayer TryParseExact pour définir le format exact. méthode, voici la documentation: http://msdn.microsoft.com/en-us/library/ms131044.aspx

par exemple.

DateTime outDt; 
bool blnYYYMMDD = 
    DateTime.TryParseExact(yourString,"yyyyMMdd" 
          ,CultureInfo.CurrentCulture,DateTimeStyles.None 
          , out outDt); 

J'espère que je vous aiderai.

  0

Mec! C'est tellement utile, j'ai perdu près d'une heure de plus, même si je sais que je l'ai déjà fait quelque part. 31 mars. 092009-03-31 08:46:31


0

Vous pouvez utiliser la méthode TryParse pour vérifier la validité et analyser en même temps.

DateTime output; 
string input = "09/23/2008"; 
if (DateTime.TryParseExact(input,"MM/dd/yy", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output) || DateTime.TryParseExact(input,"yyyyMMdd", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out output)) 
{ 
    //handle valid date 
} 
else 
{ 
    //handle invalid date 
}