момент-часовой пояс интерпретировать дату в определенном часовом поясе - PullRequest
1 голос
/ 16 апреля 2019

Если я хочу построить моментный объект, представляющий временную метку в определенном часовом поясе, например, 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.

Какая причина этого поведения? Как мне сказать моменту-часовому поясу «взять эту дату и время и интерпретировать их так, как если бы они находились в часовом поясе, который я говорю»?

1 Ответ

0 голосов
/ 16 апреля 2019

Ниже приведен фрагмент, демонстрирующий, как применить ответ из дублирующего вопроса.

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>
...