.add days return 错误值

.add days return wrong value

我不知道为什么,但是当我从 FullCalendar 获取日期并尝试对其进行编辑时,似乎 moment.js 覆盖了所有已保存的日期。例如:

var date_start = $calendar.fullCalendar('getView').start.toDate();
date_start.setHours(0);
var date_end = $calendar.fullCalendar('getView').start.toDate();
date_end.add(1, "days");
console.log("start => " , date_start);
console.log("end => " , date_end)

返回结果:

start => Sat Oct 24 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)
end => Sat Oct 24 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)

这是错误的,因为结束日期应该是:

end => Sun Oct 25 2015 00:00:00 GMT+0200 (ora legale Europa occidentale)

注意:我将结束日期保存为开始日期,因为我正在使用这个 extension 并且当天实际上有一个错误,事实上资源被分成更多天到一天(阅读文档以获取更多详细信息)。

我的问题与 date_end.add(1, "days"); 有关,实际上这段代码替换了从开始日期返回到 date_start 变量的所有日期。

JSFiddle

您每次都使用相同的日期对象引用。

为第二个创建一个新对象

   var date_start = $('#calendar').fullCalendar('getView').start.toDate();
    date_start.setHours(0);
    // create new instance
    var date_end = moment(date_start);
    date_end.add(1, "days");
    console.log("start => " , date_start);
    console.log("end => " , date_end.toDate());

DEMO