特定时区中的moment-timezone解释日期

时间:2019-04-16 15:03:21

标签: javascript datetime timezone momentjs moment-timezone

如果我要建立一个矩对象,它代表某个时区中的时间戳,例如2019/04/13 00:00:00在欧洲/柏林时区,我该怎么办?

我要做什么:

moment.tz.setDefault('Europe/Berlin');
const m = moment('2019/04/13 00:00:00');

m设置为Sat Apr 13 2019 02:00:00 GMT+0200 (Central European Summer Time)-比我需要的时间提前2小时。我需要的是00:00:00而不是02:00:00。

此行为背后的原因是什么?我该如何告诉moment-timezone“采用此日期和时间,并将其解释为与我说的时区相同”?

1 个答案:

答案 0 :(得分:0)

以下是演示如何应用重复问题的答案的代码段。

const berlin = moment.tz('2019/04/13 00:00:00', 'YYYY/MM/DD hh:mm:ss', 'Europe/Berlin');

console.log('UTC', berlin.utc().format());
// UTC 2019-04-12T22:00:00Z

console.log('Europe/Berlin', berlin.tz('Europe/Berlin').format());
// Europe/Berlin 2019-04-13T00:00:00+02:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.js"></script>