momentjs toDate()日期返回与format()日期不同

时间:2016-12-26 12:11:22

标签: javascript momentjs

我正在使用moment 2.16.0,并希望从一个月开始。 toDate()format()方法有不同的结果。这是jsfiddle

代码: -

var time=moment().subtract(0,'months').startOf("month").format();
console.log(time); //2016-12-01T00:00:00+05:30

var time2=moment().subtract(0, 'months').endOf("month").format();
console.log(time2); //2016-12-31T23:59:59+05:30

var time=moment().subtract(0,'months').startOf("month").toISOString();
console.log(time); //2016-11-30T18:30:00.000Z  here i want somethings like 2016-12-01T00:00:00.000Z


var time2=moment().subtract(0, 'months').endOf("month").toISOString();
console.log(time2); // 2016-12-31T18:29:59.999Z here i want somethings like 2016-12-31T59:59:59.000Z

1 个答案:

答案 0 :(得分:1)

toISOString之外,您的所有操作都使用本地时间,这将为您提供UTC字符串。由于您的时区偏离UTC,因此本地时间字符串(来自format)和UTC时间字符串(来自toISOString)非常不同。

  

这里我想要的东西如2016-12-01T00:00:00.000Z

这与Moment实例所代表的时间不同。

如果您想在当地时间使用ISO-8601格式,可以将format与适当的格式化代码组一起使用,但是您不需要Z最后,因为您还没有处理UTC(" Zulu")时间,您需要处理当地时间。

moment().format("YYYY-MM-DDThh:mm:ss.SSS")