7
votes

Comment puis-je accepter des années à deux chiffres et à quatre chiffres avec un seul appel à DateTime.Parseexact?

J'appelle DateTime.parseexact avec une chaîne de format personnalisée le long des lignes de "mm / jays / aaaa h: mmt" . Cette chaîne gère des années à quatre chiffres mais pas des années à deux chiffres. Existe-t-il un moyen de gérer les deux cas dans un seul appel parseexact? J'ai essayé "mm / jj / yy h: mmt" et gère seulement le boîtier à deux chiffres.


0 commentaires

4 Réponses :


0
votes

Vous pouvez toujours utiliser Surcharge appropriée :

var date = DateTime.ParseExact(dateString,
                               new[] { "MM/dd/yyy h:mmt", "MM/dd/yy h:mmt" },
                               new CultureInfo("en-US"), 
                               DateTimeStyles.None);


0 commentaires

20
votes

Vous pouvez transmettre un tableau de chaînes de format pour le deuxième paramètre de cette surcharge de parseexact code> - cela inclurait à la fois les variantes de 2 et 4 ans.

DateTime.ParseExact(myDateTime, 
                    new []{"MM/dd/yy h:mmt", "MM/dd/yyyy h:mmt"},
                    CultureInfo.InvariantCulture,
                    DateTimeStyles.None)


2 commentaires

Merci; c'est bien. Les formats sont-ils essayés dans l'ordre qu'ils apparaissent dans le tableau? Serait-il préférable de mettre le format à quatre chiffres d'abord?


@Williamgross - La documentation ne précise pas, mais les chances sont que oui, ils sont essayés dans l'ordre. Il ne serait préférable que de mettre le format à quatre chiffres d'abord si la plupart des chaînes attendues à l'analyse auront des années à quatre chiffres.



3
votes

Appeler la surcharge de DateTime.parseexact qui accepte un tableau de formats possibles: xxx

pour le troisième argument, passe null ou denttimeformatinfo.currentInfo si votre chaîne de date est localisée pour la culture actuelle de l'utilisateur; Pass denttitimeformatinfo.invariantinfo Si votre chaîne de date est toujours au format américain.

pour le quatrième argument, 0 équivalent à DateTimeMestyles.none . < / p>

voir le Documentation de la bibliothèque MSDN .


0 commentaires

1
votes

Utilisez le surchargé DateTime.parseexact qui prend une gamme de chaînes de formats.

msdn: xxx


0 commentaires