JS中时间对象与时间的格式化
JS中时间对象与时间的格式化
new Date("2024-04-08T00:00:00")// 输出 Mon Apr 08 2024 00:00:00 GMT+0800 (中国标准时间) 时间就是按照东八区来输出的
new Date("2024-04-08 00:00:00")// 输出 Mon Apr 08 2024 00:00:00 GMT+0800 (中国标准时间) 时间就是按照东八区来输出的
new Date() // Mon Apr 08 2024 14:39:35 GMT+0800 (中国标准时间) 时间就是按照东八区来输出的
new Date("2024-04-08T00:00:00Z") // Mon Apr 08 2024 08:00:00 GMT+0800 (中国标准时间) 参数中的Z代表的是UTC时间,他会认为我传给他的是一个0时区的时间,输出的时候使用东八区的时间展示的。
new Date("2024-04-08") // Mon Apr 08 2024 08:00:00 GMT+0800 (中国标准时间) 原本以为应该是00:00,但是实际多出来了8个小时。不知道这一一块的时区是怎么实现的。
从上面的代码的输出可以看出,当使用new Date("2024-04-08T00:00:00Z")
或者是new Date("2024-04-08")
的时候,时间会多出来8个小时。
- 开发中,可以直接使用
new Date()
或者是new Date("yyyy-MM-dd HH:mm:ss")
来获取当前的时间是不会收到时区的影响的。 - 不要使用
new Date("yyyy-MM-dd")
或者是new Date("yyyy-MM-dd HH:mm:ssZ")
。这要获取到的时间会比系统时间多出来8个小时。
时间格式化可以使用moment.js
- 在使用moment.js格式化时间的过程中,没有发现时区导致的时间不正确的问题。
moment() // Sun Nov 17 2024 16:43:15 GMT+0800 (中国标准时间) 返回的是当前时区的当前时间
moment('2024-04-08') // Mon Apr 08 2024 00:00:00 GMT+0800 (中国标准时间) 返回的是当前时区的0点
moment('2024-04-08T00:00:00Z') //Mon Apr 08 2024 08:00:00 GMT+0800 (中国标准时间) 传入的是一个UTC时间,返回的是一个将UTC时间转换为GMT+8显示的时间。针对该moment使用year(),hour(),format()函数的时候,返回的也是根据东八区的时间为基础的。
HTTP请求中日期参数被转换成UTC的表示时间
let params = {
satrtDate: new Date(),
endDate: new Date()
}
- 如果HTTP参数中,有用时间对象表示的参数,打开network工具栏会发现时间被转换成为了UTC时区的时间,这是因为JS对象转换成JSON字符串造成的。
- 即使是将new Date()替换成为moment(),时间也会被JS转换。
- 可以使用moment().format()函数获取日期时间,通过字符串的形式传递日期参数,JS不会转换。
- 直接使用new Date()作为参数值的话,参数会携带着时区信息,后端(SringBoot)中配置的jackson时区就会失效
posted on 2024-04-08 14:49 zhaoLei_Free 阅读(221) 评论(0) 编辑 收藏 举报