nodejs 中 UTC 时间戳转化的问题?
各位好,koa/nodejs 中获取 UTC 时间,并转化为时间戳,我通过下面的代码实现的
const UTC = new Date().toUTCString();
console.log(UTC);
const UTCtimestamp = Date.parse(UTC);
console.log(UTCtimestamp);
现在的问题是,能够正确的打印出 UTC 即 UTC0 的时间,但在转化成时间戳后,却变成了本地时间的时间戳。
比如 UTC 是 Wed, 24 Jan 2024 06:02:07 GMT但转化后的时间戳却是 1706076127000
自动 +8 了,请问该怎么不自动转化,而是显示 UTC0 本身的时间戳?
回复
1个回答
test
2024-06-23
别把自己搞晕了,正因为 toUTCString 的返回结果里面的 GMT 标识存在,你获取的到的已经是 UTC 时间戳了。
只是你在在打印的时候,默认调取了你当前所在的时区,所以显示成了 +8 的让你感到疑惑。
以你的例子来说,如果你去掉了 Wed, 24 Jan 2024 06:02:07 GMT
里面的 GMT ,改为 Wed, 24 Jan 2024 06:02:07
,你就会发现,他是按照你当前时区格式化获取出来的时间戳了,这才有问题。
时间戳记录了的是从 UTC 0 的 1970年1月1日0时0分0秒 到当前的秒(毫秒),换成国内的时区,就是从 1970年1月1日08时0分0秒 开始的了。
所以你在真实时区 +8 和 +0 上获取的同一时间的时间戳都是一样的。
只是在 +8 时区上,想要处理一个 +0 时区的字符串时,需要注意,因为有可能这个字符串被当成当前时区的处理的。换句话说,你在 +0 时区的 2024/01/01 00:00:00 是等于 +8 时区的 2024/01/01 08:00:00 的。但是你在 +0 时区的 2024/01/01 00:00:00 可不等于 +8 时区的 2024/01/01 00:00:00。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容