代码之家  ›  专栏  ›  技术社区  ›  mr_blond

getTimezoneOffset()是否包含日间节约信息?如何获取这两个值?

  •  0
  • mr_blond  · 技术社区  · 7 年前

    在GMT+0时存储在服务器中的日期,不保存白昼。

    客户端应该以自己的时区格式接收它。所以我们可以得到时区偏移量,并将其与接收日期进行汇总:

    const currentTime = new Date();
    this.timezoneOffset = currentTime.getTimezoneOffset();
    

    然后我们可以检查DLS区域的客户机是否以某种方式存在,例如使用momentjs:

     const isDaylightSavingTime = moment().isDST();
    

    我想不出三件事: 1) getTimezoneOffset()是否已包含日间节约信息 2) 如果没有,最好的检查方法是DST中的user-then-moment(因为我已经读过了,现在js在自己的基础上没有一些国家和城市)

    1 回复  |  直到 7 年前
        1
  •  2
  •   RobG    7 年前

    我想不出三件事:

    矩是ECMAScript日期对象的包装器。内置日期实例的时区偏移量基于主机系统设置。根据实现情况,它可能反映也可能不反映相关日期(即调用方法的日期)对时区的历史性更改。它将至少反映当前设置。

    2) 如果没有,最好的检查方法是DST中的user-then-moment(因为我已经读过了,现在js在自己的基础上没有一些国家和城市)

    你需要定义“更好”。除了其他库(例如。 Luxon ),有如下web API timezonedb Date.prototype.toLocaleString 使用的选项 IANA

    您不能修改时区偏移量,因为只有getter,所以任何“本地”日期都将应用时区偏移量,无论是特定日期和位置的标准偏移量还是夏令时偏移量。上面所做的只是通过偏移来移动时间,它不会更改时区(除非它跨越了夏令时边界)。