Pergunta

Estou tendo problemas converter uma string no formato "AAAA-MM-Ddz" usando VB.net.

Por exemplo, eu tenho a string "2007-10-21Z".

Usando CDate ou TryParse ele sai para 2007/10/20 vez de 2007/10/21.

Eu não estou entendendo como o Z afeta a seqüência de data para que quando ele é analisado resulta no dia anterior.

Pelo que eu entendo especifica Z fuso horário zero. Mas a seqüência de data não tem nenhuma informação do tempo. Como isso funciona?

Foi útil?

Solução

Tente

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

Outras dicas

É interpretar a data como meia-noite Zulu tempo (GMT) e, em seguida, convertê-lo de volta ao seu fuso horário local. Se você é nos Estados Unidos que seria entre 15:00 - 19:00 do dia anterior.

A adição de "Z" para os especifica a data que o tempo é UTC . Quando você CDate de TryParse a data, é convertê-lo para a hora local.

Uau, isso é interessante. Tento em C # DateTime.Parse ( "2008-10-31"). ToString (); e o resultado é "10/30/2008 05:00:00".

Eu não posso esperar por uma resposta!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top