2014-06-02 6 views
3

Я пытаюсь использовать moment.js для преобразования моих дат на стороне клиента. Я собираюсь дать точные спецификации.Moment.js: Преобразование даты UTC из базы данных в местное время

Даты хранятся на сервере с использованием DateTime.UtcNow в C#. Они сохраняются в базе данных и выглядят так: 2014-06-02 21:37:40.087, поэтому примерно 9:37 вечера в UTC. Я на западном побережье США, так что переводится в 2:37 вечера PST.

Когда эти строки считываются с прикладного уровня и отправляются в браузер в JSON, он разрешает эту строку "2014-06-03T04:37:40.087Z".

Что такое расхождение в том, как оно хранится в базе данных по сравнению с тем, как оно выходит в тексте JSON?

ответ

3

Казалось бы, что даже если вы хранения значения UTC, вы не рассматривать его как UTC, когда извлечения эти значения из базы данных. Убедитесь, что ваши значения C# DateTime имеют DateTimeKind.Utc после прочтения, используя DateTime.SpecifiyKind.

Если вы хотите отредактировать свой вопрос с некоторыми дополнительными деталями, например конкретным кодом, то я могу дать более четкий ответ.

+0

Мэтт, вы были совершенно правы. При получении даты из БД я не использовал 'DateTime.SpecifyKind()' перед отправкой их в браузер. Вы знаете какой-либо способ сделать «вид» по умолчанию для UTC DateTime для всего приложения, или это невозможно? – DJKempner

+0

Нет, это невозможно. Каждое значение 'DateTime' является независимым. Возможно, вы захотите прочитать [What's Wrong with DateTime Anyway] (http://noda-time.blogspot.com/2011/08/what-wrong-with-datetime-anyway.html), [More Fun with DateTime] (http : //msmvps.com/blogs/jon_skeet/archive/2012/05/02/more-fun-with-datetime.aspx) и [The Case Against DateTime.Now] (http://codeofmatt.com/2013/ 04/25/случая, против-DateTime, теперь /). Вы можете также рассмотреть [Noda Time] (http://nodatime.org) в качестве альтернативы. –

Смежные вопросы