Как преобразовать строку "yyyy-MM-ddZ" в дату с помощью .net? - PullRequest
4 голосов
/ 01 ноября 2008

У меня проблемы с преобразованием строки в формате "yyyy-MM-ddZ" с использованием VB.net.

Например, у меня есть строка "2007-10-21Z".

Используя CDate или TryParse, он выходит 20.10.2007 вместо 10/21/2007.

Я не понимаю, как Z влияет на строку даты, так что когда она анализируется, это приводит к предыдущему дню.

Из того, что я понимаю, Z указывает нулевой часовой пояс. Но строка даты не имеет информации о времени. Как это работает?

Ответы [ 4 ]

8 голосов
/ 01 ноября 2008

Это интерпретирует дату как полуночное время по зулу (GMT), а затем преобразовывает ее обратно в ваш местный часовой пояс. Если вы находитесь в Штатах, это будет с 15:00 до 19:00 предыдущего дня.

6 голосов
/ 01 ноября 2008

Попробуйте

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

4 голосов
/ 01 ноября 2008

Добавление «Z» к дате указывает, что время равно UTC . Когда вы CDate TryParse дату, она конвертирует ее в местное время.

0 голосов
/ 01 ноября 2008

Ого, это интересно. Я пытаюсь в C # DateTime.Parse ("2008-10-31"). ToString (); и результат «30.10.2008 17:00:00».

Не могу дождаться ответа!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...