FullCalendar eventResize()返回日期+ 1?

时间:2015-04-10 18:30:26

标签: javascript jquery fullcalendar

这基本上是同一个问题as here,但那里没有答案。我更具体一点:它返回endDate + 1(似乎)。当使用FullCalendar.eventResize函数并显示event.end.format()结果时,它会将结束日期报告为比日历上可视化显示的日期晚一天,至少我们人类会读取它。

这是全天活动。该事件是可编辑的,以月视图显示。如果你有一个跨越一天的事件 - 比如说2015/4/08 - 它会填满整个广场。如果然后拖动该事件的结束点直观地覆盖​​两天而不是一天,那么应该是2015/4 / 08-2015 / 4/09,包括event.end.format()函数返回值'2015- 04-10'作为新的结束日期。

现在也许它告诉我它在2015/4/10的00:00:00结束,但那不是我想要的。我希望它在2015/4/09的23:59:59结束;这就是视觉指示所显示的。如果我向数据库报告新结束日期是2015/4/10,那么从用户的角度来看,这将是错误的日期。此外,通过从日期中减去一个,这在DB本身中相对容易处理,但我只是想知道是否有正式理由,如果它是一个错误,我的代码是错误的等等。

I created a JSFiddle来证明这一切。只需拖动事件的终点即可获得显示新结束日期的弹出窗口。这是JSFiddle中使用的代码:

    $(document).ready(function () {
    var httpXHR, fmpurl;
    currDate = "2015/7/01";

    $("#calendar").fullCalendar({
        defaultDate: currDate,
        editable: true,
        allDayDefault: true,
        eventStartEditable: true,
        eventDurationEditable: true,
        dayClick: function () {
            alert("a day has been clicked!");
        },

        eventDrop: function (event, delta, revertFunc) {
            if (!confirm(event.title + " was dropped on " + event.start.format() + ".\nAre you sure about this change?")) {
                revertFunc();
            }
        },

        eventResize: function (event, delta, revertFunc) {
            if (!confirm(event.title + " end is now " + (event.end.format()) + ".\n\nIs this okay?")) {
                revertFunc();
            } else {
                alert("Date was changed to: " + event.end.format());
            }
        },

        events: [{
            id: 1,
            title: "Project 1",
            start: "7/1/2015",
            end: "7/3/2015"
        }, {
            id: 2,
            title: "Project 2",
            start: "7/3/2015",
            end: "7/7/2015"
        }, {
            id: 3,
            title: "Project 3",
            start: "7/7/2015",
            end: "7/7/2015"
        }, {
            id: 4,
            title: "Project 4",
            start: "7/7/2015",
            end: "7/11/2015"
        }, {
            id: 5,
            title: "Project 5",
            start: "7/14/2015",
            end: "7/16/2015"
        }, {
            id: 6,
            title: "Project 6",
            start: "6/18/2015",
            end: "7/3/2015"
        }, {
            id: 7,
            title: "Project 7",
            start: "7/30/2015",
            end: "8/15/2015"
        }, {
            id: 15,
            title: "Project 15",
            start: "6/08/2015",
            end: "6/19/2015"
        }]
    });

});

- 贾斯汀

1 个答案:

答案 0 :(得分:2)

这是一些有点不直观的行为。

忘记拖动和调整大小,它们与它无关。只需看看Project 1。日历上有两天,但它的指定日期是

{start: "7/1/2015",
 end: "7/3/2015"}

文档在end下的Event Object部分提到了这一点:

  

活动结束的专属日期/时间。可选的。

     

Moment-ish输入,类似于ISO8601字符串。整个API这个   将成为真正的Moment对象。

     

这是活动结束后的那一刻。例如,   如果活动的最后一整天是星期四,则独家结束   活动将于周五00:00:00举行!

由于结束日期没有时间,因此时间为“00:00:00”。 事件之后