Помогите разобраться с временными поясами

Fet Frumos
Дата: 15.04.2014 18:03:15
Всем добрый вечер. О проблеме - есть клиентское приложение написаное на .NET 4.5, сервер MS SQL 2008 express. В базе есть значение DateTime. Это значение необходимо отображать в клиенте. В процесе разработки было все ок:). Запускаем на одной клиентской машине - смещение времени было +4 часа. Отображал время просто и незатейливо
myDateTime.ToString("dd/MM HH:mm:ss")

надо было быстро решить эту проблему :), записал в виде
myDateTime.ToLocalTime().ToString("dd/MM HH:mm:ss")

на этой машине все отображается коректно. Но на другой выводит смещение +2, в таком виде показывает ок
myDateTime = DateTime.SpecifyKind(myDateTime, DateTimeKind.Utc);
myDateTime.ToLocalTime().ToString("dd/MM HH:mm:ss")


но с данным вопросом нужно разобраться :). На одном и другом клиенте часовой пояс +4. Подскажите как правильно обработать данную ситуацию.
LameUser
Дата: 16.04.2014 07:50:02
Если с программой работают люди из разных часовых поясов - тогда в базе лучше хранить время UTC (DateTime.UtcNow или .myDateTimeToUniversalTime()).

А при получении на клиенте - как и было у вас указано:
myDateTime = DateTime.SpecifyKind(myDateTime, DateTimeKind.Utc);
myDateTime.ToLocalTime()


Посмотрите настройки часовых поясов в винде. Может быть они разные поэтому и по разному выходят результате при методе .ToLocalTime().


Если нет смещения часовых поясов - то лучше просто работать по локальному времени (и в базе хранить, и без конвертации показывать на клиенте).
Fet Frumos
Дата: 16.04.2014 12:42:01
LameUser, спасибо буду пробовать