3 votes

problème d'analyse de l'heure de la date c#

L'analyse de la date fonctionne exactement lorsque le format de la date est mm/dd/yyyy mais lorsque le format de la date est dd/mm/yyyy alors le problème se produit. Je veux écrire un code pour analyser la date quel que soit le format utilisé.

supposez que si ma date est du type "15/01/2012" ou 05/12/2012, alors mon code peut l'analyser comme une date valide. alors que dois-je faire ? j'utilise un code du genre

IFormatProvider culture = new System.Globalization.CultureInfo("en-US", true);
string xxx = DateTime.ParseExact("15/12/2012", "yyyyMMdd", culture).ToString();

il ne fonctionne pas parce que le format de la date est dd/mm/yyyy. alors dites-moi la meilleure solution quand le format de la date est dd/mm/yyyy ou mm/dd/yyyy etc mais que le code peut l'analyser correctement. alors guidez-moi sur le code que je dois utiliser. merci.

7voto

Jon Skeet Points 692016

Vous ne doit pas autorisez les deux formats MM/dd/yyyy et dd/MM/yyyy sans indiquer lequel est utilisé, sinon vous risquez d'obtenir de mauvaises données. Comment interpréteriez-vous "06/05/2011" ? Le 6 mai ou le 5 juin ?

Vous devez soit spécifier le format explicitement ou vous devriez utiliser le format culturel par défaut (qui ne devrait pas autoriser les deux formats), mais traiter "13/12/2011" différemment de "11/12/2011" simplement parce que la valeur du jour est différente. se produit pour avoir 13 ans est une très mauvaise idée, IMO.

(La raison pour laquelle votre exemple de code ne fonctionne pas est que vous dites explicitement que vous voulez qu'il soit analysé en tant que yyyyMMdd qui est clairement pas le format de "15/12/2012" . Je ne sais pas pourquoi vous vous attendez à ce que ça marche).

4voto

munissor Points 2559

Il existe une surcharge de ParseExact qui accepte plusieurs formats de date. Voir http://msdn.microsoft.com/en-us/library/332de853.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X