Я просто хочу получить подтверждение от экспертов. Я до сих пор не уверен в том, что считаю верным способом хранения и обработки дат в таких условиях.
Я разрабатываю небольшое приложение, только для итальянских пользователей.
В принципе, они могут создавать список записей, каждый из которых имеет createDate (меня интересует только часть даты, время не полезно в моем сценарии).
Таким образом, пользователь вводит в поле формы "дата" дату в таком формате: 22/06/2014 представляет 22 июня 2014 года. Затем дата анализируется следующим образом:
entryData.dateEntry = moment( $(form).find('input[name=dateEntry]').val(), 'DD-MM-YYYY' ).toDate();
Наконец, моя модель ввода добавляется в коллекцию backbone.js и хранится на стороне сервера Node.js + Express в MongoDB.
Запросив Mongo для записей, я вижу:
2014-06-21 22:00:00 +0000
который соответствует "dateEntry": Date (1403388000000).
В Google, я обнаружил, что у MongoDB нет концепции часового пояса. Все даты хранятся в формате UTC, а объект даты, который я создал ранее, имел GMT + 2. Но я действительно боюсь... как я смогу вернуть свой локальный часовой пояс простым способом?
Затем я покажу данные ввода в шаблоне подчеркивания, следующим образом:
<%= moment(dateEntry).format('DD/MM/YYYY') %>
И... вуаля! Я получаю местную "итальянскую" дату: 22/06/2014.
Теперь, мой вопрос: - это правильный путь?
Процесс: синтаксический анализ в локальном часовом поясе = > сохранение в utc = > получение дат в локальном часовом поясе. Это обычная практика?
Я также подумал: не могу ли я просто избегать использования часовых поясов и сохранять свое местное (итальянское) время, как это было время utc (2014-06-22 00:00:00)? Это так плохо?