JS date 只能返回本机时区吗?

JS 调整时区偏移后还是返回GMT+0800 (中国标准时间),我想将时区改为太平洋时区如:GMT-0700 (Pacific Daylight Time)。请问大家该如何处理呢?

`<script>

var timezone = -7;  //洛杉矶市区
var d = new Date(); //当前时间
var len = d.getTime(); 
var offset = d.getTimezoneOffset() * 60000;
var utcTime = len + offset;
var cdate = new Date(utcTime + 3600000 * timezone);
console.log(cdate);
console.log(d);

</script>`

实际输出结果为:
image

想要的结果为:
Wed Oct 07 2020 06:47:00 GMT-0700 (Pacific Daylight Time)
Wed Oct 07 2020 21:47:00 GMT+0800 (中国标准时间)

请问需要如何处理呢?

阅读 3.3k
2 个回答

JS 里的 Date 永远是本机时区,你无法更改 date 内部存储的时区信息,除非改操作系统。

默认 toString 就是以本机时区输出,你也可以 toUTCString 获取这个时间在世界协调时下的表示。

你想要的带时区信息的 Date 类型,JS 目前原生没有提供,你要等 Temporal 提案了。

Date 对象并没提供覆写时区的操作,所以你在直接输出 Date 对象时,他会自动把时间格式化为 系统时区,所以,你可以考虑给 Date 按照 java 的风格拓展一个 setTimezone 的操作,然后再重写一个 toString 函数,根据 setTimezone 的值,格式化为对应的时区显示时间...

不然就 moment ,省事..

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏