javascript - getTimezoneOffset() 是否包含夏令时信息以及如何获取这两个值?

标签 javascript date timezone momentjs timezone-offset

服务器中存储的日期为 GMT+0,没有夏令时。

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

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

然后我们可以以某种方式检查客户端是否位于 DLS 区域,例如使用 momentjs:

 const isDaylightSavingTime = moment().isDST();

我不明白三件事: 1) getTimezoneOffset() 是否已经包含夏令时信息 2)如果没有,更好的方法是检查DST中的用户然后时刻(因为我读过时刻js在它自己的基地中没有一些国家和城市) 3) Moment().add(Moment().utcOffset(), 'm') 返回夏令时日期吗?

最佳答案

And there I can't figure out 3 things: 1) does getTimezoneOffset() already contain Day Light Saving information

Moment 是 ECMAScript Date 对象的包装器。内置 Date 实例的时区偏移基于主机系统设置。根据实现的不同,它可能反射(reflect)也可能不反射(reflect)相关日期(即调用该方法的日期)的时区的历史更改。它至少会反射(reflect)当前的设置。

2) and if not, what the better way to check is user in DST then moment (because I readed thet moment js have not some countries and cities in it's own base)

你需要定义“更好”。除了其他库(例如 Luxon )之外,还有像 timezonedb 这样的 Web API和 Date.prototype.toLocaleString以及使用 IANAtimeZone 选项地点名称,例如“亚洲/上海”。如果您愿意,您还可以下载并使用 IANA 时区数据库。

3) does Moment().add(Moment().utcOffset(), 'm') return date with Day Light Saving?

您无法修改时区偏移量,只有一个 getter,因此任何“本地”日期都将应用时区偏移量,无论是特定日期和位置的标准偏移量还是夏令时偏移量。上述所有操作都是按偏移量移动时间,它不会更改时区(除非跨夏令时边界移动)。

日期对象本质上是 UTC,因此一般方法是对所有内容都使用 UTC,并且只考虑时区偏移量进行表示。这并没有涵盖所有场景,但涵盖了大多数场景。其余案例需要根据用例采取特定方法。

如果您描述您正在尝试执行的操作,您可能会得到更相关的答案。

关于javascript - getTimezoneOffset() 是否包含夏令时信息以及如何获取这两个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53364735/

相关文章:

javascript - html 代码插入 javascript 错误

javascript - 在列上分组时动态隐藏 ExtJS 4 网格列

MySQL日期函数(假设May-10保存为2010-05-01)

java - 为什么我的 getTimeZone().getDisplayName 报告错误的偏移量?

date - 不同时区的同一日期

javascript - 我想将值传递给使用 odata 的标签

Javascript 多次翻转

string - 在Matlab中处理不同格式的日期字符串

android像whatsApp一样在listview上获取日期

timezone - Windows CE 6.0 注册表中的时间设置