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