js处理日期时区问题解决方法
在国际化的开发中,会遇到时区问题, 平时用js处理时间,基本上忽略了时区,javascript默认用的是机器本地的时区来处理。如果涉及到时区转换,有以下几种方式进行处理。
一、日期格式后缀法
通常new Date()会得到一个这种结构的日期时间:Thu Dec 09 2021 15:19:04 GMT+0800 最后的GMT表示格林尼治时间,+0800表示东八区
如果new Date()带有包含时区的参数,会把参数时间转换成当前时区时间,比如:
new Date('Thu Dec 09 2021 15:19:04 GMT+0900')
会输出Thu Dec 09 2021 14:19:04 GMT+0800,意思就是东九区的15点19分实际上是东八区的14点19分,省略掉GMT直接+-数值也是可以的new Date('Thu Dec 09 2021 15:19:04 +9')
除了gmt,utc也可以表示0时区,只是两者意义不同,UTC称为协调世界时,其它常见的还有PDT(太平洋夏季时间),PST(太平洋标准时间、西八区)
此外还有一种日期格式:2021-12-09T07:36:28Z T表示后面的是时间,可以用空格代替,Z表示0时区,加减时区方式和上面一样
二、转换为格林威治时间法
利用 Date().getTimezoneOffset() 方法,获取当前系统和格林威治时间的偏离分钟数
转为格林威治时间,然后在做处理
复制
以上是两种纯前端javascript进行时区处理的方法。
在线体验转换可以通过工具 https://www.guud.cn/tools/timestamp-convert.html 进行转换验证。 截图如下:
