前端 日期 时间 时区 问题

// 2022年9月1日 00:00:00
console.log(new Date());   : Thu Sep 01 2019 08:00:00 GMT+0800 (中国标准时间)
console.log(JSON.stringify(new Date()));   :  "2022-08-31T16:00:00.000Z"

常见问题

1、使用字符串 new Date 时,不带时间部分 错误

// 2022年9月1日 08:00:00
console.log(new Date('2022-09-01'));   :  Thu Sep 01 2022 08:00:00 GMT+0800 (中国标准时间)  ❌

// 2022年9月1日 00:00:00
console.log(new Date('2022-09-01 00:00:00'));   :  Thu Sep 01 2022 00:00:00 GMT+0800 (中国标准时间)

2、时间作为 api 参数
直接作为 query 参数,可能出现转换问题,所以不推荐

// 2022年9月1日 00:00:00
// 直接作为 query 参数 , + 号可能会被 处理成 %20
Thu%20Sep%2001%202022%2000:00:00%20GMT%200800%20(中国标准时间)
// 在转换回来 是
Thu Sep 01 2022 00:00:00 GMT 0800 (中国标准时间)
// 对比发现 丢失了 + 号
Thu Sep 01 2022 00:00:00 GMT+0800 (中国标准时间)
// 在转成 Date ,时区标识 (GMT+0800)会被截断,变成 2022年9月1日 08:00:00

body 参数 ,会转为JSON 0时区格式,就是 "2022-08-31T16:00:00.000Z" (2022年9月1日 00:00:00)

你可能感兴趣的:(前端 日期 时间 时区 问题)