Node.js Дата не учитывает DST (летнее время) - PullRequest
0 голосов
/ 26 мая 2020

Я живу в Ванкувере, западное побережье Северной Америки, Канада. Исходный часовой пояс здесь - PST (pacifi c стандартное время, UT C - 8 часов), но теперь это PDT (pacifi c летнее время, UT C - 7 часов) с момента перехода на летнее время.

Проблема в том, что Node.js использует исходное время без перехода на летнее время, тогда как Ubuntu возвращает летнее время.

В дальнейшем оба значения должны быть 21: 44.

$ echo `date` , `node -e "console.log(new Date().toString())"`
Mon May 25 21:44:57 DST 2020 , Mon May 25 2020 20:44:57 GMT-0800 (GMT-08:00)

Почему это происходит? Как разрешить Node.js распознавать DST?

Я использую Noce. js v12.16.3 на Ubuntu 18.04.4 как WSL на Windows 10. (Node.js v12.16.3 для Windows работает правильно.) TZ env не установлен.

ОБНОВЛЕНИЕ Я не хочу устанавливать внешние библиотеки.

Ответы [ 2 ]

0 голосов
/ 18 июля 2020

Мой тест показывает, что узел выполняет летнее время:

$ date; node -e "console.log(new Date().toString())";
Fri Jul 17 23:13:32 EDT 2020
Fri Jul 17 2020 23:13:32 GMT-0400 (Eastern Daylight Time)

$ date --date='Fri Jul 17 2020 23:13:32 GMT-0400'
Fri Jul 17 23:13:32 EDT 2020

$ node -v
v10.21.0

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04 LTS
Release:        20.04
Codename:       focal
0 голосов
/ 26 мая 2020

Более точной библиотекой будет момент. js. Вы можете установить время для распознавания DST следующим образом:

moment(timestamp).tz(timezone).isDST()

Вот пример:

moment(1451624400000).tz('America/New_York').isDST();

Вы можете узнать больше о распознанных временных метках и часовых поясах в документации на веб-сайте, который Я ссылался выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...