javascript Date.toJSON 问题注意点

地点:北京 

 

一、先抛出问题: 

  为了展示的清楚,当时时间指定设置,不直接使用 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 来这么处理。

 

个人 推荐写法

 

 

 

 

参考:

https://www.cnblogs.com/lingyejun/p/10344692.html

http://lihuaxi.xjx100.cn/news/104316.html?action=onClick

https://www.zhihu.com/question/23672102

 

posted @ 2023-03-08 15:07  王希有  阅读(114)  评论(0编辑  收藏  举报