地点:北京  

一、先抛出问题: 

  为了展示的清楚,当时时间指定设置,不直接使用 new Date()

Q1、

javascript date t javascript date tojson_html

 

 

会发现

时间 Date 2023-3-8 06:30:00, 在

toLocaleString()  后的结果是  '2023/3/8 06:30:00'

toJson()  后的结果是  '2023-03-07T22:30:00.000Z'

两者的时间刚好差8个小时, 且 toLocaleString() 是正确的显示时间

 

Q2、

javascript date t javascript date tojson_html_02

会发现

经过 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'

 

三、注意

javascript date t javascript date tojson_javascript date t_03

 

 

所以 不建议 直接使用 toJson 来这么处理。

 

个人 推荐写法

javascript date t javascript date tojson_字符串_04