momentjs timezone提供不一致的时间

时间:2018-05-17 03:49:53

标签: momentjs

我在服务器端的nodejs / express应用程序中使用了moment-timezone。问题是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 个答案:

答案 0 :(得分:1)

由于+1时间,您将获得+2Daylight 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>