getTimezoneOffset()是否包含Day Light Saving信息?如何获取这两个值



在GMT+0存储在服务器中的日期,不带Day Light Saving。

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

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

然后我们可以检查客户端是否在DLS区域,例如使用momentjs:

const isDaylightSavingTime = moment().isDST();

在那里我想不出三件事:1( getTimezoneOffset((是否已包含Day Light Saving信息2( 如果没有,最好的检查方法是在夏令时中检查用户,然后是即时消息(因为我读了soft moment js,它自己的基础上没有一些国家和城市(3( 是否使用Day Light Saving添加(Moment((.utcOffset((,'m'(返回日期?

在那里我无法计算出3件事:1( getTimezoneOffset((是否已包含Day Light Saving信息

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

2

您需要定义"更好"。除了其他库(例如Luxon(,还有一些web API,如timezonedb和Date.protype.toLocaleString,带有时区选项,使用IANA位置名称,如"亚洲/上海"。如果您愿意,也可以下载并使用IANA时区数据库。

3(是否使用Day Light Saving添加(Moment[(].utcOffset[(],'m'(返回日期?

您不能修改时区偏移,只有getter,因此任何"本地"日期都将应用时区偏移,无论是特定日期和位置的标准偏移还是夏令时偏移。以上所做的只是将时间偏移一个偏移量,它不会改变时区(除非它越过夏令时边界偏移(。

日期对象的核心是UTC,因此通常的方法是对所有内容都使用UTC,并且只考虑时区偏移量。这并不能涵盖所有情况,但它涵盖了大多数情况。剩下的案例需要基于用例的具体方法。

如果你描述你想做什么,你可能会得到更相关的答案。

最新更新