Читать объект DateTime в другом часовом поясе - PullRequest
1 голос
/ 17 сентября 2010

У меня есть следующий сценарий:

США: база данных и сервер приложений

Европа: клиент

Сервер считывает объект времени даты (например, 12:00) избазы данных и отправить его клиенту в Европе.Проблема в том, что клиент отображает эту дату и время в часовом поясе клиента (например, 18:00), но нам нужно время в базе данных, независимо от часового пояса сервера.На клиенте мы не знаем, из какого часового пояса это значение.

Так как мы можем достичь этого?

Ответы [ 3 ]

1 голос
/ 17 сентября 2010

Разве вы не можете просто использовать DateTime.ToUniversalTime()?

http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx

В качестве альтернативы, если вы не хотите использовать UTC, вы можете узнать часовой пояс вашего сервера и сделать что-то вроде:

DateTime dt;
TimeZoneInfo timezone_EST =
    TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");    
DateTime dt_EST = TimeZoneInfo.ConvertTime(dt, timezone_EST);
1 голос
/ 17 сентября 2010

ваши теги говорят ответ.

используйте класс TimeZone.

http://msdn.microsoft.com/en-us/library/system.timezone.touniversaltime.aspx

также: Создание DateTime в определенном часовом поясе в c # fx 3.5

Так что в вашей БД время должно быть UTC. оттуда вы можете делать все, что вы хотите.

0 голосов
/ 17 сентября 2010

Если вы храните данные DateTime в SQL 2008, взгляните на новый тип datetimeoffset , который будет хранить информацию о часовом поясе, а также сами дату и время

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