moment.js startOf问题

时间:2015-11-10 15:26:40

标签: javascript momentjs

我正在尝试使用moment.js获取一天的开始和结束(这是从今天开始的几天)。这是我的代码:

var today = moment();
var day = today.add(-5, "days");
var startOfDay = day.startOf("day");
var endOfDay = day.endOf("day");

console.log("today " + today.format());
console.log("day " + day.format());
console.log("start " + startOfDay.format());
console.log("end " + endOfDay.format());

这些是日志:

I2015-11-10T15:19:02.930Z]today 2015-11-10T15:19:02+00:00
I2015-11-10T15:19:02.931Z]day 2015-11-05T15:19:02+00:00
I2015-11-10T15:19:02.932Z]start 2015-11-05T23:59:59+00:00
I2015-11-10T15:19:02.933Z]end 2015-11-05T23:59:59+00:00

如您所见,startend日期完全相同。 end日期符合预期,但startOf函数似乎与endOf函数完全相同。

是否有我遗失的东西?

1 个答案:

答案 0 :(得分:9)

日期是可变的,并且通过方法调用进行更改。您的两个日期实际上都是相同的日期对象。也就是说,day.startOf("day")会在您调用它时返回day的值。但是你可以制作副本:

var startOfDay = moment(day).startOf("day");
var endOfDay = moment(day).endOf("day");

构造了两个新实例。