momentjs - momentjs 时区提供不一致的小时数
问题描述
我在服务器端的 nodejs/express 应用程序中使用时刻时区。问题在于该tz()
函数返回不一致的结果,我不明白为什么。这就是我正在做的事情:
items.forEach(function(item){
moment(item.start.date).hour(5).minute(0).tz(Europe/Vienna).format()
})
(item.start.date
以谷歌date
格式(不是dateTime
格式),像这样2019-03-31
:)它有时会返回+1
小时,有时会+2
像这样返回:
2018-05-20T07:00:00+02:00
2018-08-15T07:00:00+02:00
2018-12-25T06:00:00+01:00
2018-12-26T06:00:00+01:00
2018-12-08T06:00:00+01:00
2019-01-01T06:00:00+01:00
2019-01-06T06:00:00+01:00
2018-05-21T07:00:00+02:00
2018-05-31T07:00:00+02:00
2018-11-01T06:00:00+01:00
2018-11-02T06:00:00+01:00
2018-12-02T06:00:00+01:00
2018-12-31T06:00:00+01:00
2018-10-26T07:00:00+02:00
2019-04-14T07:00:00+02:00
2019-04-22T07:00:00+02:00
2019-05-01T07:00:00+02:00
2019-04-19T07:00:00+02:00
2019-04-21T07:00:00+02:00
2018-10-28T06:00:00+01:00
2019-03-31T07:00:00+02:00
非常感激你的帮助!非常感谢!
解决方案
由于时间的原因,您正在获得+1
和小时。要解析时间,您可以查看此链接:+2
Daylight Savings
DST
https://momentjs.com/timezone/docs/#/using-timezones/parsing-ambiguous-inputs/
以防万一,要重新确认您获得的上述日期是否为夏令时格式,您可以使用momentjs 的isDST()函数。下面是一个例子:
let isDaylightSaving = moment("2018-05-20T07:00:00+02:00").isDST();
console.log(isDaylightSaving);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.js"></script>
推荐阅读
- python - 以有效的方式将字典中的所有项目作为参数传递
- javascript - 如何获取 youtube 嵌入的 id?
- c# - 如何在 C#/WPF 中显示来自 ffmpeg 的实时视频流?
- java - 推送 project.properties 问题
- javascript - 如何退出全屏模式并同时触发我自己的功能?
- javascript - 如何提取此功能以不重复代码
- c# - 无法复制文件“C:\pagefile.sys”,因为找不到
- php - 使用 PHP 从网站保存 HTML 标记数据
- php - Codeigniter 表单验证回调函数抛出错误信息
- angular - 如何在 Angular 6 中拦截滚动事件?