如何使用moment.js设置00:00:00

时间:2016-01-13 09:05:33

标签: javascript momentjs

我想获得当前日期,但时间应为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?

3 个答案:

答案 0 :(得分:65)

Moment.js将日期存储为utc并可以对其应用不同的时区。默认情况下,它会应用您当地的时区。 如果要在utc日期时间设置时间,则需要指定utc timezone。

请尝试以下代码:

var m = moment().utcOffset(0);
m.set({hour:0,minute:0,second:0,millisecond:0})
m.toISOString()
m.format()

答案 1 :(得分:3)

var time = moment().toDate();  // This will return a copy of the Date that the moment uses

time.setHours(0);
time.setMinutes(0);
time.setSeconds(0);
time.setMilliseconds(0);

答案 2 :(得分:0)

您尚未显示如何创建字符串2016-01-12T23:00:00.000Z,但我假设是.format()

无论如何,.set()正在使用您的本地时区,但时间字符串中的Z表示zero time,也称为UTC。

https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators

所以我假设你当地的时区距离UTC还有23个小时?

saikumar's answer展示了如何以UTC格式加载时间,但另一种选择是使用.format()调用,使用您当地的时区而不是UTC进行输出。

http://momentjs.com/docs/#/get-set/
http://momentjs.com/docs/#/displaying/format/