我住在加拿大北美洲西海岸的温哥华。这里的原始时区为PST(太平洋标准时间,UTC-8h),但由于夏令时开始,现在为PDT(太平洋夏令时,UTC-7h)。
问题是Node.js使用原始的非DST时间,而Ubuntu返回DST。
在下面,两者都应为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?
我在Windows 10上将WSL用作Ubuntu 18.04.4上的Noce.js v12.16.3。(对于Windows,Node.js v12.16.3可以正常工作。)TZ
env未设置。
UPDATE我不想安装外部库。
更准确的库应该是moment.js。您可以像这样设置识别DST的时间:
moment(timestamp).tz(timezone).isDST()
这里是一个例子:
moment(1451624400000).tz('America/New_York').isDST();
您可以在我上面链接的网站上的文档中阅读有关公认的时间戳和时区的更多信息。