Думаю, я понял, как преобразовать время, хранящееся в нашей БД, в местное время пользователя, но, похоже, нет. Когда я сохраняю начальное время в моей базе данных postresql (на Heroku), оно указывается как 2018-11-14 19:45:00
, я сохраняю его как TIMESTAMP. В то время, когда я сохраняю его, я должен использовать момент?
Запуск журналов Heroku Я заметил, что время сервера 2018-11-14T19:45:00.200076+00:00
, что такое UTC?
Используя момент JS в моем приложении узла, я выполняю следующее
fixture.kick_off = 2018-11-14 19:45:00.000000
<%= moment(fixture.kick_off).local().format('HH:mm A') %>
У меня был пользователь из Дании, заявляющий, что это показывает как 19:45, где, как я хотел, чтобы это показывало 20:45 PM согласно разнице во времени
Я что-то здесь неправильно понял (очень вероятно)
Спасибо
Обновление
Я сейчас использую приведенный ниже ответ Мэтта
<%= moment.utc(fixture.kick_off).local().format('HH:mm A') %>
Следуя комментариям Мэтта о проверке typeof fixture.kick_off, он возвращал object
, теперь обновил мой код до
<% var kick_off = fixture.kick_off.toString() %>
<%= moment.utc(kick_off).local().format('HH:mm') %>
, который возвращает следующее в консоли
Deprecation warning: value provided is not in a recognized RFC2822 or ISO
format. moment construction falls back to js Date(), which is not reliable
across all browsers and versions. Non RFC2822/ISO date formats are discouraged
and will be removed in an upcoming major release. Please refer to
http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: true, _useUTC: true, _l: undefined, _i: Thu
Nov 15 2018 19:00:00 GMT+0000 (Greenwich Mean Time), _f: undefined, _strict:
undefined, _locale: [object Object]
Error