Momentjs и преобразование в unix дает неверную дату

У меня возникли проблемы с получением моментальных данных для правильной конвертации даты в unix:

var start = new Date(2013,11,2);
console.log('Start date: '+start);
console.log('Unix date: '+moment(start).unix());
console.log('Unix date 2: '+moment(start).add('hours', 1).unix());

Start date: Mon Dec 02 2013 00:00:00 GMT+0100 (CET)
Unix date: 1385938800
Unix date 2: 1385942400

см. http://jsfiddle.net/7Equ2/4/

Но ввод преобразованной даты unix в http://www.onlineconversion.com/unix_time.htm возвращает Sun, 01 Dec 2013 23:00:00 GMT, а добавление 1 часа возвращает правильную дату unix. Я думаю, это потому, что дата начала создана в CET (мой часовой пояс локали). Поэтому, я думаю, мне нужно передать дату начала в формате UTC, но мне нужно сохранить дату (т.е. Все равно должно быть "Mon Dec 02 2013 00:00:00"). Но я не могу понять, как это сделать.

Я пытался

moment(start).utc().unix(),

но это, похоже, не имеет никакого значения, поскольку он все еще возвращает дату Unix: 1385938800

Как мне вернуть правильную дату unix?

1 ответ

Временные метки не имеют временных зон. Они все относительно UTC.

Солнце, 01 декабря 2013 года 23:00:00 GMT равно Mon Dec 02 2013 00:00:00 GMT + 0100, если вы конвертируете второй в UTC. Решение включает в себя момент-часовой пояс и выбор часовой пояс по умолчанию для всех объектов момента.

moment.tz.setDefault("UTC");

https://momentjs.com/timezone/

https://momentjs.com/timezone/docs/#/using-timezones/default-timezone/

licensed under cc by-sa 3.0 with attribution.