1

如果我想构建一个时刻对象,表示某个时区的时间戳,例如欧洲/柏林时区的 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 “获取此日期和时间并将其解释为就好像它在我说的时区中一样”?

4

1 回答 1

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>

于 2019-04-16T15:47:27.963 回答