【问题标题】:.add days return wrong value.add days 返回错误的值
【发布时间】:2015-10-24 17:39:10
【问题描述】:

我不知道为什么,但是当我从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)

结果返回:

开始 => 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 并且当天实际上有一个错误,实际上资源在一天中被拆分为一天(阅读文档以获取更多细节)。

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

JSFiddle

【问题讨论】:

    标签: javascript fullcalendar momentjs


    【解决方案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

    【讨论】:

    • 现在我知道我做错了什么。谢谢你,祝你有美好的一天:)
    • 如果你有时间,也许你可以看看我的另一个问题:stackoverflow.com/questions/33320164/…
    • 不熟悉该列扩展,但我认为应该绑定到 UI 事件
    • 好的,不过如果你有时间看我会很高兴的。
    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 2019-02-03
    • 2013-02-10
    相关资源
    最近更新 更多