Как установить 00:00:00, используя moment.js
Я хочу получить текущую дату, но время должно быть 00:00:00.000
Я попробовал это:
var m = moment();
m.set({hour:0,minute:0,second:0,millisecond:0});
console.log(m.toISOString());
но у меня есть: 2016-01-12T23:00:00.000Z
почему 23, а не 00?
Ответы
Ответ 1
Moment.js сохраняет даты utc и может применять к нему разные временные интервалы. По умолчанию применяется локальный часовой пояс.
Если вы хотите установить время в utc date time, вам нужно указать часовой пояс utc.
Попробуйте использовать следующий код:
var m = moment().utcOffset(0);
m.set({hour:0,minute:0,second:0,millisecond:0})
m.toISOString()
m.format()
Ответ 2
moment.utc(0).format('HH:mm:ss')
Ответ 3
Вы не показали, как вы создаете строку 2016-01-12T23:00:00.000Z
, но я предполагаю через .format()
.
В любом случае .set()
использует ваш локальный часовой пояс, но Z
в строке времени указывает нулевое время, иначе известный как UTC.
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
Итак, я предполагаю, что ваш часовой пояс составляет 23 часа с UTC?
saikumar answer показал, как загружать время в формате UTC, но другой вариант - использовать вызов .format()
, который выводит с использованием вашего локального часового пояса, а не UTC.
http://momentjs.com/docs/#/get-set/
http://momentjs.com/docs/#/displaying/format/