Как установить 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/