2013-12-23 2 views
2

я имею немного проблем получать momentjs преобразовать дату в UNIX в правильном пути:momentjs и преобразование в 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?

+0

вы хотите делать [это] (http://jsfiddle.net/7Equ2/1/)? –

+0

спасибо. Исправлен URL-адрес – ThomasD

ответ

0

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

Вс, 1 декабря 2013 23:00:00 GMT равно Пн дек 02 2013 00:00:00 GMT + 0100, если преобразовать второй по Гринвичу. Решение включает в себя момент-часовой пояс и выбор часовой пояс по умолчанию для всех объектов момента.

moment.tz.setDefault("UTC"); 

https://momentjs.com/timezone/

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

Смежные вопросы