FullCalendar 5 - 如何获取事件系列的结束日期 - eventClick?

Posted

技术标签:

【中文标题】FullCalendar 5 - 如何获取事件系列的结束日期 - eventClick?【英文标题】:FullCalendar 5 - How do I get the end date of an event series - eventClick? 【发布时间】:2021-12-31 05:11:16 【问题描述】:

我正在使用 FullCalendar 5 和 JSON 来填充事件:

id;
title;
daysOfWeek;
startRecur;
endRecur;
startTime;
endTime;
backgroundColor;

我有一系列带有开始和结束日期的事件。当我单击一个事件时,结束日期显示为事件发生所在的日期单元格。我想检索一系列事件的结束日期。我正在使用 info.event.end。

这是代码:

eventClick: function(info) 
    var eventObj = info.event;
            
    $('#updateDescription').val(eventObj.title);
    $('#updateStartDate').val(moment(eventObj.start).format('DD/MM/YYYY'));
    $('#updateEndDate').val(moment(eventObj.end).format('DD/MM/YYYY')); //Shows as 29/11/2021 should be 01/12/2021
    $('#updateStartTime').val(moment(eventObj.start).format('HH:mm'));
    $('#updateEndTime').val(moment(eventObj.end).format('HH:mm'));
    $('#updateColour').val(eventObj.backgroundColor);
            
    $('#ecClickModal').modal('show');
,

id: '001,
title: 'Event A',
daysOfWeek: '[1, 4]',
startRecur: '2021-01-01',
endRecur: '2022-12-30',
startTime: '10:00',
endTime: '11:00',
backgroundColor: 'Red',

id: '002,
title: 'Event B',
daysOfWeek: '[2, 3]',
startRecur: '2021-05-01',
endRecur: '2023-05-30',
startTime: '09:00',
endTime: '10:00',
backgroundColor: 'Blue',

id: '003,
title: 'Event C',
daysOfWeek: '[5]',
startRecur: '2020-01-01',
endRecur: null,
startTime: '10:00',
endTime: '11:00',
backgroundColor: 'Green',

当我点击“事件 B”时,我想获得结束日期“2023-05-30”。

目前,如果我点击“2021 年 11 月 30 日”发生的“事件 B”,那么:

info.event.start is 30/11/2021
info.event.end is 30/11/2021

周期性活动不需要结束日期。因此,解决方案必须能够满足“事件 C”(即请为空结束日期)。

【问题讨论】:

不幸的是,无法从单个事件中做到这一点。也许可以通过 fullCalendar 项目提出功能请求(请参阅fullcalendar.io/requesting-features)。 @ADyson 我提出了功能请求。 【参考方案1】:

目前在 FullCalendar 中没有内置函数来获取一系列事件的最后日期。您必须使用calendar::getEvents 获取所有事件,然后找到最后一个事件的结束日期。

document.addEventListener('DOMContentLoaded', function() 
  var calendarEl = document.getElementById('calendar');

  var calendar = new FullCalendar.Calendar(calendarEl, 
    initialView: 'dayGridMonth',
    events: [
      
        id: 'a',
        title: 'my event a',
        start: '2021-11-01',
        end: '2021-11-02'
      ,
      
        id: 'b',
        title: 'my event b',
        start: '2021-11-03',
        end: '2021-11-04'
      ,
      
        id: 'c',
        title: 'my event c ',
        start: '2021-11-05',
        end: '2021-11-06'
      ,
      
        id: 'd',
        title: 'my event d',
        start: '2021-11-07',
        end: '2021-11-08'
      ,
    ],
  );

  calendar.render();

  // Fetching all events
  const allEvents = calendar.getEvents();


  // Sorting the events based on the last date (descending)
  allEvents.sort((eventA, eventB)=> 
    return eventB.end-eventA.end;
  );

  const lastDate = allEvents[0].end;
);

info.event.end 只为您提供单个事件的结束日期。

另外,在我偶然发现它之前,我该如何管理一个空的结束日期?

你能解释一下这个问题吗?

【讨论】:

感谢您的帮助,非常感谢。我已更新问题以使其更清楚。我想获取我点击的重复事件的结束日期。

以上是关于FullCalendar 5 - 如何获取事件系列的结束日期 - eventClick?的主要内容,如果未能解决你的问题,请参考以下文章

在fullcalendar中添加新事件时如何获取资源ID

fullcalendar 没有从谷歌日历获取事件

如何根据 FullCalendar V5 上的选择值过滤事件?

jQuery fullcalendar在按键时不获取事件

从 MySQL 获取和显示 Vue.js Fullcalendar 上的事件

FullCalendar - 获取外部链接以突出显示现有事件