2009-06-26 9 views
1

Sur un système d'exploitation 32 bits, avec un processeur Intel, DateTime e. 2/17/2009 12:00:00 AM Notez que c'est: mm/jj // aaaaProblème DateTime sur différentes plates-formes (.NET 2.0)

Sur un système d'exploitation 64 bits, avec un processeur AMD, DateTime e.g. Maintenant, quand j'essaye d'analyser le 1er format, il jette une erreur sur la 2ème plate-forme. Cela signifie que - DateTime.Parse ("2/17/2009 12:00:00 AM") - déclenche une erreur - ne peut pas convertir. alors que, sur la même plateforme, DateTime.Parse ("17/2/2009 12:00:00 AM") fonctionne! Cela signifie que DD/MM est bien, MM/DD ne l'est pas.

À quoi est-ce dû? Le système d'exploitation 64 bits? Le processeur?

Comment puis-je me débarrasser du problème?

Répondre

5

DateTimes eux-mêmes n'ont pas de formats. Vous les parsiez ou les formatez en chaînes. (C'est comme si les nombres entiers ne sont pas stockés en hexadécimal ou en décimal, ils ne sont que des nombres entiers, vous pouvez les mettre en forme hexadécimale ou décimale, mais la valeur elle-même n'est qu'un nombre.)

la culture du système d'exploitation (ou plus exactement, la culture du thread, qui est généralement la même que celle du système d'exploitation).

Personnellement, j'aime explicitement définir le format que j'utilise pour l'analyse ou la mise en forme, à moins que je ne montre la chaîne à l'utilisateur et que la culture soit déjà appropriée.

+0

Je sais que FxCop vous avertit quand vous faites ce genre de chose avec des cordes. Fait-il la même chose pour DateTime? –

+0

@Roger: Aucune idée ... Je devrais vraiment regarder de plus près FxCop à un moment donné ... –

2

Vérifiez vos "formats de date et d'heure" dans le panneau de configuration "Région et langue".

De plus, si vous souhaitez que DateTime génère un format spécifique, n'appelez pas simplement ToString(), mais transmettez-lui un paramètre indiquant le format souhaité. De même, si vous connaissez le format de la date que vous lui demandez d'analyser, appelez TryParseExact() et indiquez-lui le format que vous fournissez.

Voir aussi MSDN de Standard Date and Time Format Strings