【问题标题】:moment-timezone interpret date in certain timezone时刻时区解释特定时区的日期
【发布时间】:2019-09-06 17:44:30
【问题描述】:

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

【问题讨论】:

标签: javascript datetime timezone momentjs moment-timezone


【解决方案1】:

根据您的评论,以下是一个演示如何应用重复问题的答案的 sn-p。

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2016-03-12
    • 2016-08-16
    • 1970-01-01
    • 2018-11-28
    相关资源
    最近更新 更多