.add天返回错误的值

时间:2015-10-24 17:39:11

标签: javascript fullcalendar momentjs

我不知道为什么,但是当我从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 => 2015年10月24日星期六00:00:00 GMT + 0200(ora legale Europa occidentale)
  结束=> 2015年10月24日星期六00:00:00 GMT + 0200(ora legale Europa occidentale)

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

  

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

注意:我将结束日期保存为开始日期'因为我正在使用此extension并且实际上当天有一个错误,事实上资源在一天之内被拆分为一天(阅读doc更多细节)。

我的问题与date_end.add(1, "days");有关,似乎这段代码将从开始日期返回的所有日期替换为date_start变量。

JSFiddle

1 个答案:

答案 0 :(得分:1)

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

为第二个

创建一个新对象
   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