FullCalendar - 整天的活动有一天太短了

时间:2014-12-22 14:11:29

标签: javascript jquery fullcalendar

我正在向fullcalendar传递类似这样的事件:

{
     id: 31,
     title: 'Test',
     start: '2014-12-22',
     end: '2014-12-23',
     allDay: true
}

我希望在日历中找到一个跨越两天的活动,但该活动仅在2014-12-22位置,而不在2014-12-23位置。 nextDayThreshold参数设置为00:00:00,但根据文档,当allDay设置为true时,应忽略它。我确信allDay被正确解释,因为在议程视图中,事件出现在全天行中。

如何设置fullcalendar以在两天内显示此类事件?

3 个答案:

答案 0 :(得分:8)

根据eventDataTransform function,如果您的活动是allDay,则可以添加1天。请注意,这只会影响渲染。

eventDataTransform: function(event) {                                                                                                                                
  if(event.allDay) {                                                                                                                                               
    event.end = moment(event.end).add(1, 'days')                                                                                                                 
  }
  return event;  
}                                                                                                                                                  

答案 1 :(得分:5)

我认为这是一个有意识的设计决定,因为根据thisthis这样的讨论,所有结束日期都被认为是排他性的,即尽管是一整天的活动,但结束了日期不被视为包含(包括)标记的日期。例如如果您的开始日期为2015-03-01 00:00:00且结束日期为2015-03-02 00:00:00,那么 span 只有一天。

这似乎与version 2 upgrade to using moment.js重合。因此,您可能需要在结束日期添加“23:59:59”,或者找到指定结束日期的其他方式,例如:作为开始日期的两天的持续时间?

答案 2 :(得分:0)

在 ajax GET 上添加一天的所有事件

moment(end_date, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD HH:mm:SS')

在 ajax POST(更新)中减去(1,'days')

moment(eventChange_end, 'YYYY-MM-DD').subtract(1, 'days').format('YYYY-MM-DD HH:mm:SS')