Как установить часовой пояс процесса узла? - PullRequest
3 голосов
/ 30 марта 2020

Я использую 12.14.1 и мне кажется, узел игнорирует TZ env. во многих случаях переменная:

$ TZ=GMT-4 node -e 'console.log(new Date().getTimezoneOffset(), new Date().toString())'
-120 Mon Mar 30 2020 10:10:12 GMT+0200 (Central European Summer Time)

Это совершенно неверно. Либо все должно быть в GMT + 4 (да, +, странная вещь POSIX), либо возвращаемое время не должно совпадать с моим местным временем (то же время в часовом поясе GMT ​​+ 2 и GMT + 4 - нонсенс).

Время в разных часовых поясах должно отличаться при преобразовании в один и тот же часовой пояс для печати:

$ TZ=GMT-2 node -e 'console.log(new Date().getTimezoneOffset(), new Date().toString())'
-120 Mon Mar 30 2020 10:10:14 GMT+0200 (Central European Summer Time)

Тем не менее, узел непреклонен, он одинаков.

Как надежно и кроссплатформенно ( Linux, Windows, Ma c) установить произвольный (не только UT C и его эквиваленты) часовой пояс процесса узла?

Редактировать:
Вот пример один правильный вариант, как он может себя вести:

$ TZ=GMT-4 date
Po 30. března 2020, 12:06:04 GMT
$ TZ=GMT-2 date
Po 30. března 2020, 10:06:09 GMT

При преобразовании в одну и ту же тимзону время в разных часовых поясах должно различаться (GMT + 4 и GMT + 2 отличаются на 2 часа).

1 Ответ

0 голосов
/ 30 марта 2020

TZ=GMT, за которым следует + / -, и число больше не работает с версии 10. Например, для GMT + 4 можно использовать TZ=Europe/Samara. При поиске подходящего часового пояса будьте осторожны, чтобы выбрать тот, который не имеет летнего времени (DST).

Тестовая печать new Date().getTimezoneOffset(), new Date().toString() для основных версий узлов 6-13:

current date         : Po 30. března 2020, 14:32:31 CEST
with TZ=GMT-4        : Po 30. března 2020, 16:32:31 GMT
with TZ=UTC          : Po 30. března 2020, 12:32:31 UTC
with TZ=GET          : Po 30. března 2020, 16:32:31 +04
with TZ=Europe/Samara: Po 30. března 2020, 12:32:31 GET

v6.17.1
with TZ=GMT-4        : -240 'Mon Mar 30 2020 16:32:31 GMT+0400 (GMT)'
with TZ=UTC          : 0 'Mon Mar 30 2020 12:32:31 GMT+0000 (UTC)'
with TZ=GET          : 0 'Mon Mar 30 2020 12:32:31 GMT+0000 (GET)'
with TZ=Europe/Samara: -240 'Mon Mar 30 2020 16:32:31 GMT+0400 (+04)'

v7.10.1
with TZ=GMT-4        : -240 'Mon Mar 30 2020 16:32:32 GMT+0400 (GMT)'
with TZ=UTC          : 0 'Mon Mar 30 2020 12:32:32 GMT+0000 (UTC)'
with TZ=GET          : 0 'Mon Mar 30 2020 12:32:32 GMT+0000 (GET)'
with TZ=Europe/Samara: -240 'Mon Mar 30 2020 16:32:32 GMT+0400 (+04)'

v8.17.0
with TZ=GMT-4        : -240 'Mon Mar 30 2020 16:32:32 GMT+0400 (GMT)'
with TZ=UTC          : 0 'Mon Mar 30 2020 12:32:33 GMT+0000 (UTC)'
with TZ=GET          : 0 'Mon Mar 30 2020 12:32:33 GMT+0000 (GET)'
with TZ=Europe/Samara: -240 'Mon Mar 30 2020 16:32:33 GMT+0400 (+04)'

v9.11.2
with TZ=GMT-4        : -240 'Mon Mar 30 2020 16:32:33 GMT+0400 (GMT)'
with TZ=UTC          : 0 'Mon Mar 30 2020 12:32:33 GMT+0000 (UTC)'
with TZ=GET          : 0 'Mon Mar 30 2020 12:32:33 GMT+0000 (GET)'
with TZ=Europe/Samara: -240 'Mon Mar 30 2020 16:32:33 GMT+0400 (+04)'

v10.19.0
with TZ=GMT-4        : -120 'Mon Mar 30 2020 14:32:34 GMT+0200 (Central European Summer Time)'
with TZ=UTC          : 0 'Mon Mar 30 2020 12:32:34 GMT+0000 (Coordinated Universal Time)'
with TZ=GET          : 0 'Mon Mar 30 2020 12:32:34 GMT+0000 (GMT)'
with TZ=Europe/Samara: -240 'Mon Mar 30 2020 16:32:34 GMT+0400 (Samara Standard Time)'

v11.15.0
with TZ=GMT-4        : -120 'Mon Mar 30 2020 14:32:35 GMT+0200 (Central European Summer Time)'
with TZ=UTC          : 0 'Mon Mar 30 2020 12:32:35 GMT+0000 (Coordinated Universal Time)'
with TZ=GET          : 0 'Mon Mar 30 2020 12:32:35 GMT+0000 (GMT)'
with TZ=Europe/Samara: -240 'Mon Mar 30 2020 16:32:35 GMT+0400 (Samara Standard Time)'

v12.16.1
with TZ=GMT-4        : -120 Mon Mar 30 2020 14:32:35 GMT+0200 (Central European Summer Time)
with TZ=UTC          : 0 Mon Mar 30 2020 12:32:35 GMT+0000 (Coordinated Universal Time)
with TZ=GET          : 0 Mon Mar 30 2020 12:32:35 GMT+0000 (GMT)
with TZ=Europe/Samara: -240 Mon Mar 30 2020 16:32:35 GMT+0400 (Samara Standard Time)

v13.12.0
with TZ=GMT-4        : -120 Mon Mar 30 2020 14:32:36 GMT+0200 (Central European Summer Time)
with TZ=UTC          : 0 Mon Mar 30 2020 12:32:36 GMT+0000 (Coordinated Universal Time)
with TZ=GET          : 0 Mon Mar 30 2020 12:32:36 GMT+0000 (GMT)
with TZ=Europe/Samara: -240 Mon Mar 30 2020 16:32:36 GMT+0400 (Samara Standard Time)

Для получения более подробной информации см. Билет: https://github.com/nodejs/node/issues/32564

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