解析DateTime得到错误Unix时间:为何时间戳为遥远未来?
为什么生成的Unix时间戳看起来是遥远未来?
首先明确:这个时间戳根本不是遥远未来,是你误解了它的单位。
问题拆解:
- 你输入的日期字符串
'1989-11-11T03:34'没有指定时区,JavaScript 的Date构造函数会默认把它当成本地时间解析。 - 输出的
Fri, 10 Nov 1989 22:34:00 GMT是转换后的 UTC 时间,说明你的本地时区比 UTC 快5小时(22:34 +5小时 = 次日03:34),这个转换逻辑是正常的。
核心误区:时间戳的单位
+date 或者 date.valueOf() 返回的是毫秒级的 Unix 时间戳(从1970-01-01 UTC 开始计算的毫秒数):
- 把
626740440000除以1000转换成秒级时间戳,得到626740440,对应的就是1989年11月10日22:34:00 UTC,和输出的UTC时间完全匹配。 - 你觉得它是“遥远未来”,大概率是把毫秒数当成了秒数来理解——如果是秒级的
626740440000,那确实是遥远未来,但 JavaScript 的时间戳默认是毫秒级的,这就是问题所在。
你可以直接验证:在控制台执行 new Date(626740440000),会直接返回对应的1989年的日期,完全正常。
内容的提问来源于stack exchange,提问作者devaskim
相关产品推荐
相关产品推荐

