2010-10-05 6 views
7

Je suis en train d'analyser une chaîne pour la convertir en date et heure. Je reçois dans certains cas, une erreur:DateTime.Parse: exception lors du changement de culture

String was not recognized as a valid DateTime. 

Je reçois cette erreur que si je lance l'application à partir d'un ordinateur situé dans un pays différent de celui des États-Unis. Ce que je vois dans la chaîne est 09/20/2010 14:11 et dans ce cas, je reçois une exception. Si j'ai une valeur comme: 10/05/2010 12:54 Je ne reçois pas d'exception. Je suppose que c'est le fait que le jour est 20 et que cet ordinateur est en Europe, donc il pense que 20 est le mois. Le problème est que je force à être en-US:

CompletedDttm = DateTime.ParseExact(value, "MM/dd/yyyy hh:mm", new CultureInfo("en-US")); 

Parce que je reçois l'exception je suppose que ce soit la bonne approche.

Une idée comment analyser une chaîne d'une manière qui fonctionne quelle que soit la culture que je cours sur la machine?

+0

Si vous savez que le format sera toujours comme ça, vous pouvez utiliser DateTime.Parse (value, CultureInfo.InvariantCulture); En termes de format de date et d'heure, InvariantCulture est à peu près un équivalent de en-US. BTW, si vous l'analyser comme cela, .Net ne sera pas en mesure de déterminer le fuseau horaire et il traitera votre DateTime comme "local non spécifié" qui pourrait conduire à des erreurs. Si vous savez que la source est en UTC, utilisez ceci: DateTime.Parse (value, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); –

Répondre

10

Vous devez utiliser "HH: mm" au lieu de "hh: mm" - "HH" est pour l'horloge de 24 heures; "hh" est pour une horloge de 12 heures. Donc 14 n'est pas une valeur valide pour "hh".

Je m'attendrais à voir le même problème même sur une machine américaine bien que ... peut-être vous aviez justement obtenu seulement des périodes de pré-1pm sur vos machines des USA en raison des différences de fuseau horaire?

+0

Je pense que c'était le problème. Ça fonctionne maintenant. – tony

+0

Un grand merci pour l'aide rapide Tony – tony

Questions connexes