Когда вы создаете момент из строки, а часовой пояс не указан, момент предполагает, что это местное время. В соответствии с моментом документы :
момент (...) - локальный режим. Предполагается неоднозначный ввод (без смещения)
быть по местному времени. Однозначный вход (со смещением) настроен на локальный
время.
Таким образом, «2019-05-11 18:22:40» будет считываться моментально как дата в местном часовом поясе.
Вы можете предположить, что сейчас UTC, используя moment.utc("2019-05-11 18:22:40")
.
Это означает изменение вашего кода следующим образом:
var myDate = "2019-05-11 18:22:40" //stored in DB utc format
myDate = timezone.utc(myDate).tz("America/Los_Angeles").format("YYYY-MM-DD HH:mm:ss");
Но в идеале ваша база данных должна хранить / возвращать даты, используя стандарт ISO-8601 для отображения времени, чтобы часовой пояс был чистым, то есть "2019-05-11T18: 22: 40Z". «Z» обозначает UTC, поэтому момент автоматически проанализирует это как UTC, если вы позвоните moment("2019-05-11T18:22:40Z")
.