地点:北京
一、先抛出问题:
为了展示的清楚,当时时间指定设置,不直接使用 new Date()
Q1、
会发现
时间 Date 2023-3-8 06:30:00, 在
toLocaleString() 后的结果是 '2023/3/8 06:30:00'
toJson() 后的结果是 '2023-03-07T22:30:00.000Z'
两者的时间刚好差8个小时, 且 toLocaleString() 是正确的显示时间
Q2、
会发现
经过 new Date 与 toLocaleString()后,
时间
2023-03-08T20:20:51.214 的结果是 '2023/3/8 20:20:51'
2023-03-08T20:20:51.214Z 的结果是 '2023/3/9 04:20:51'
两者的时间刚好差8个小时, 且 第一个 是正确的显示时间
二、原因
1、为什么会差 8 小时
Date.toJSON 返回的是 UTC时间 , 为标准时间
且
当前为北京,为东八区,所以会差 8小时
2、第二个时间字符串的 Z 是什么
在军事中,UTC会使用“Z”来表示。
所以,Z 就是 UTC
所以 2023-03-08T20:20:51.214Z 为UTC时间,则转为北京时间会 +8小时, 则会为 '2023/3/9 04:20:51'
三、注意
所以 不建议 直接使用 toJson 来这么处理。
个人 推荐写法