我在服务器端的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
非常感谢您的帮助!非常感谢!
答案 0 :(得分:1)
由于+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>