JS中时间对象与时间的格式化

JS中时间对象与时间的格式化

new Date("2024-04-08T00:00:00")// 输出 Mon Apr 08 2024 00:00:00 GMT+0800 (中国标准时间) 时间是正常的,没有多出来8个小时
new Date("2024-04-08 00:00:00")// 输出 Mon Apr 08 2024 00:00:00 GMT+0800 (中国标准时间) 时间是正常的,没有多出来8个小时
new Date()    // Mon Apr 08 2024 14:39:35 GMT+0800 (中国标准时间)  时间是正常的,没有多出来8个小时

new Date("2024-04-08T00:00:00Z") // Mon Apr 08 2024 08:00:00 GMT+0800 (中国标准时间)   时间多出来8个小时
new Date("2024-04-08") // Mon Apr 08 2024 08:00:00 GMT+0800 (中国标准时间)  时间多出来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格式化时间的过程中,没有发现时区导致的时间不正确的问题。

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  阅读(21)  评论(0编辑  收藏  举报

导航