2013-06-28 2 views
1

В базе данных даты хранятся как DateTimeOffSet. В представлениях мы должны показывать даты в местных датах.DateTimeOffset & UTC & Loal times в MVC4 - jQuery

Поскольку jquery, работающий с UTC, намного проще, мы должны отображать datetimeoffset как UTC для просмотров, а jQuery/javascript должен выполнять преобразование этого в локальные даты.

Моя проблема в том, что я возвращаю модель для просмотра и не знаю, как вернуть datetimeoffset в качестве UTC для просмотра, или это можно сделать в jQuery?

ответ

0

Это было обработано в режиме mvc, используя дату-время, как utc attriute.

0

Вы всегда должны хранить метку времени как UTC в базе данных.

Смещение зависит не только от местоположения (например, часового пояса), но и от времени года (летнее время). Таким образом, мое смещение в том же месте отличается в зависимости от времени года. Вот почему хранение смещения будет неявно ошибочным в течение половины года для большинства пользователей.

Вы можете, конечно, пересчитать UTC со смещенной серверной стороны, но это никогда не будет работать для всех пользователей - потому что переход на летнее время происходит в разные дни в разных странах. Единственное, что всегда абсолютное и сопоставимое, это UTC, поэтому вы должны сохранить это и только для локального перехода на локальный клиент.

Таким образом, лучший способ - перенести ваши временные метки базы данных в UTC один раз, а затем работать с этим.

+0

nope .. архитектор решил пойти с datetimeoffset. нужен способ вычисления UTC со смещения – mmssaann

+0

Это старое мышление и правильное только в одном направлении. Да, вы должны хранить универсальную дату, чтобы у вас было сопоставимое сопоставимое значение с любой другой датой во всем мире. Единственная проблема заключается в том, что он потерял информацию об исходном локальном часовом поясе, где он был захвачен. Таким образом, ключ с новым (SQL 2005 и .NET 3.5) DateTimeOffset просто состоит в том, что он не только хранит достаточно информации для расчета UTC, но также сохраняет исходный контекст (по местному времени). Это должно полностью заменить старый DateTime медленно. Это уже распространено в Java и большинстве сериализации XML. Просто .NET должен догнать. –