Конвертировать время UTC / GMT по местному времени - PullRequest
281 голосов
/ 07 октября 2008

Мы разрабатываем приложение на C # для клиента веб-сервиса. Это будет работать на ПК с Windows XP.

Одним из полей, возвращаемых веб-службой, является поле DateTime. Сервер возвращает поле в формате GMT, то есть с буквой «Z» в конце.

Однако мы обнаружили, что .NET, похоже, выполняет какое-то неявное преобразование, и время всегда было 12 часов.

Следующий пример кода разрешает это до некоторой степени, поскольку разница в 12 часов исчезла, но не учитывает переход на летнее время в Новой Зеландии.

CultureInfo ci = new CultureInfo("en-NZ");
string date = "Web service date".ToString("R", ci);
DateTime convertedDate = DateTime.Parse(date);            

По этой дате сайта :

UTC / GMT смещение

Стандартный часовой пояс: UTC / GMT +12 часов
Летнее время: +1 час
Текущее смещение часового пояса: UTC / GMT +13 часов

Как нам отрегулировать дополнительный час? Это можно сделать программно или это какая-то настройка на ПК?

Ответы [ 11 ]

1 голос
/ 07 октября 2008

У меня была проблема с тем, что он находился в наборе данных, передаваемом по проводам (от веб-сервиса к клиенту), и он автоматически изменялся, поскольку поле DateType в DataColumn было установлено как локальное. Убедитесь, что вы проверили, что такое DateType, если вы продвигаете DataSets через.

Если вы не хотите, чтобы это изменилось, установите Unspecified

...