各位好,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 本身的时间戳?
别把自己搞晕了,正因为 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。