我在AngularJS应用程序中使用moment-timezone。尽管阅读了“时区”标签Wiki,但我仍遇到一个我不明白的问题。
我希望每年举办一次重复的活动:同一天,同一时间。 对于每个事件,我都有一个对象,带有开始日期和结束日期。 我的时区是
moment.tz.guess() : 'Europe/Paris'
在2038年之前,日期没有问题
moment.unix(date.start).format(); : 2018-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2018-06-19T14:16:07+02:00
moment.unix(date.start).isDST(); : true
moment.unix(date.start).format(); : 2019-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2019-06-19T14:16:07+02:00
moment.unix(date.start).isDST(); : true
moment.unix(date.start).format(); : 2020-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2020-06-19T14:16:07+02:00
moment.unix(date.start).isDST(); : true
但是在2037年之后,如果我处理时区,则偏移量是“ +01:00”,而不是“ +02:00”,...不知道为什么:
moment.unix(date.start).format(); : 2035-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2035-06-19T14:16:07+02:00
moment.unix(date.start).isDST(); : true
moment.unix(date.start).format(); : 2036-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2036-06-19T14:16:07+02:00
moment.unix(date.start).isDST(); : true
moment.unix(date.start).format(); : 2037-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2037-06-19T14:16:07+02:00
moment.unix(date.start).isDST(); : true
moment.unix(date.start).format(); : 2038-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2038-06-19T13:16:07+01:00
moment.unix(date.start).isDST(); : true
moment.unix(date.start).format(); : 2039-06-19T14:16:07+02:00
moment.tz(moment.unix(date.start), 'Europe/Paris').format(); : 2039-06-19T13:16:07+01:00
moment.unix(date.start).isDST(); : true
您有什么建议吗?谢谢
答案 0 :(得分:1)
没人可以可靠地告诉您2038年时区偏移或DST规则将是什么。甚至预测到明天都基于对政府在此之前不会更改规则的盲目信念。
确实发生了其中一些人在很短的时间内改变规则的情况,或者一夜之间就改变了事实。参见On the Timing of Time Zone Changes。
在大多数情况下,世界会提前发现,tz mailing list会风起云涌并发布tzdb更新,然后像Moment-Timezone这样的库(以及其他许多库)会获取这些信息并将其处理为自己的格式。
Moment-timezone的特定格式采用重复规则并将其投影到每个过渡的特定增量中。这在运行时具有速度优势,但具有无法永远持续运行的缺点。鉴于未来更改的不可预测性会随着时间的增长呈指数级增长,这是该库(IMHO)的设计人员的合理折衷。