2008-10-31 6 views
4

J'ai des problèmes pour convertir une chaîne au format "aaaa-MM-ddZ" en utilisant VB.net.Comment convertir une chaîne "aaaa-MM-ddZ" en une date avec .net?

Par exemple, j'ai la chaîne "2007-10-21Z".

En utilisant CDate ou TryParse, il sort le 10/20/2007 au lieu du 21/10/2007.

Je ne comprends pas comment le Z affecte la chaîne de date, de sorte que lorsqu'elle est analysée, elle se produit la veille. D'après ce que je comprends, Z spécifie le fuseau horaire zéro. Mais la chaîne de date n'a pas d'information de temps. Comment cela marche-t-il?

+0

Merci. J'ai non seulement appris pourquoi la date est devenue une date avant, mais comment faire pour que je reçoive la date sans décalage de fuseau horaire. – dtc

Répondre

6

Essayez

DateTime.ParseExact ("2007-10-21Z", "aaaa-MM-ddz", CultureInfo.InvariantCulture);

+0

Je suis assez sûr que la CUltureInfo.InvariantCulture est la clé. – Domenic

0

Wow, c'est intéressant. J'essaye dans C# DateTime.Parse ("2008-10-31"). ToString(); et le résultat est "10/30/2008 5:00:00 PM".

J'ai hâte d'avoir une réponse! Ajout de "Z" à la date spécifie que l'heure est UTC

+0

Sûrement que vous vouliez écrire DateTime.Parse ("2008-10-31Z")? (Le "Z" est manquant dans votre message). Sinon, votre résultat n'a pas de sens. –

+0

Oui, je l'ai fait. Merci d'avoir fait remarquer cela! – Cyberherbalist

4

Lorsque vous cochez la case de TryParse la date, il la convertit en heure locale.

8

Il interprète la date comme heure de minuit Zulu (GMT) et la convertit ensuite dans votre fuseau horaire local. Si vous êtes aux États-Unis, entre 15h00 et 19h00 le jour précédent.

Questions connexes