Момент JS и преобразование в местное время пользователя - PullRequest
0 голосов
/ 15 ноября 2018

Думаю, я понял, как преобразовать время, хранящееся в нашей БД, в местное время пользователя, но, похоже, нет. Когда я сохраняю начальное время в моей базе данных 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

1 Ответ

0 голосов
/ 15 ноября 2018

Предполагая, что время хранится в вашей базе данных на основе UTC, вы просто забыли сообщить об этом. Используйте moment.utc(input) вместо moment(input)

moment.utc(fixture.kick_off).local().format('HH:mm A')
...