javascript中默认日期使用的是机器本地的时区来处理的。如果要显示的时区跟机器本地时区不一样,会造成显示不一致问题。

如果想解决这个问题,有以下几种解决方法:

1、时间格式后面指定时区

通常new Date()会得到一个这种结构的日期时间:Thu Oct 12 2023 14:19:24 GMT+0800 (中国标准时间), 最后的GMT表示格林尼治时间,+0800表示东八区

如果new Date()带有包含时区的参数,会把参数时间转换成当前时区时间,比如:
new Date('Thu Oct 12 2023 14:19:24 GMT-0500') 
其中GMT可以省略掉

2、时间戳数值进行加减算法,获取对应时区的时间戳
const difference = new Date().getTimezoneOffset() * 60 * 1000 //将差异值转成毫秒值
// 获取格林威治时间的毫秒值,用+ 的原因是因为如果是比格林威治时间快的地区,这个方法返回值是一个负数,而慢的地区返回值是一个正数
const GreenwichMillminutes = new Date().getTime() + difference 
// 利用这个毫秒值获取格林威治地区的日期对象实例 
const GreenwichDate = new Date(GreenwichMillminutes);

//可以根据时区,对时间戳进行加减运算,获得对应时区的时间戳
//例如北京时间
var beijingTimeStamp = GreenwichMillminutes + 8*60*60*1000;
const bejingDate = new Date(beijingTimeStamp);

点赞(14) 打赏

评论列表 共有 0 条评论

暂无评论
返回
顶部