Momentjs utc () работает по-разному на локальном (Mac) и сервере (Ubuntu) - PullRequest
0 голосов
/ 10 ноября 2018

Попытка выяснить, является ли это действительной ошибкой или фундаментальным пробелом в понимании метода moment.js utc () с моей стороны.

Когда метод используется для преобразования существующей строки времени / даты, он возвращает неверный результат только в Ubuntu

используя момент@2.22.2

В Ubuntu 16.04.4 LTS

> moment().utc().format()
'2018-11-10T16:30:28Z'
> moment('2018-11-13 19:00:00').utc().format()
'2018-11-13T19:00:00Z'

на Mac OsX 10.13.2

> moment().utc().format()
'2018-11-10T16:29:24Z'
> moment('2018-11-13 19:00:00').utc().format()
'2018-11-14T00:00:00Z'

Ответы [ 2 ]

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

Момент интерпретирует вашу строку как местное время. Часовой пояс вашего компьютера с Ubuntu установлен на UTC, поэтому он читает «2018-11-13 19:00:00» как время UTC, и преобразование его в UTC в вашем коде является пустяком. Ваш Mac работает по вашему местному времени, поэтому он интерпретирует строку как выраженную в любом часовом поясе, в котором вы находитесь, а затем utc() переводит ее в UTC. Таким образом, вы получите разные результаты.

Если вы хотите, чтобы Момент знал, что строка выражена в UTC, вам нужно указать это, например, с помощью «Z» ISO (например, «2018-11-13T19: 00: 00Z») или с помощью moment.utc("2018-11-13 19:00:00", format)

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

Попробуйте указать формат, в котором строка данных будет

console.log(moment('2018-11-13 19:00:00','YYYY-MM-DD h:mm:ss').utc().format())
...