Fullcalendar重复活动全部显示上午12点

时间:2019-05-14 01:11:49

标签: jquery fullcalendar fullcalendar-scheduler fullcalendar-4

我将事件日期存储在mySQL中,作为日期时间,并使用fullcalendar版本4,它们在整个过程中都可以正确显示。我现在正在尝试将重复事件添加到日历中,但是当我这样做时,尽管我的实际事件日期/时间是多少,所有重复事件的开始时间均为凌晨12点。

看看代码笔中发生了什么。我还附有原始代码,以供参考。

我当时在想,也许我没有正确存储重复事件的日期和时间,但是正如我所说,在我将它们设为重复事件之前,它们确实显示正确。

https://codepen.io/michels287/pen/eaBmxN?editors=0010

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

var calendar = new FullCalendar.Calendar(calendarEl, {
    selectMirror: true,
    plugins: ['interaction', 'resourceDayGrid', 'resourceTimeGrid'],
    header: {
        right: 'prevYear,prev,next,today,nextYear',
        center: 'title',
        left: 'resourceTimeGridDay,resourceTimeGridTwoDay,timeGridWeek,dayGridMonth'
    },
    views: {
        resourceTimeGridTwoDay: {
            type: 'resourceTimeGrid',
            duration: {
                days: 2
            },
            buttonText: '2 days',
        }
    },
    defaultView: 'resourceTimeGridDay',
    datesAboveResources: true,
    editable: true,
    nowIndicator: true,
    eventLimit: true,
    schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives',
    events: [ { 
      allDay: false,
      color: "#FFD700",
      company_id: "1",
      startTime: "2019-05-13 14:00:00",
      endTime: "2019-05-13 14:00:00",
      id: "22218",
      daysOfWeek: [0,1,2],
      resourceId: "1"  }],
         resources: [{
            id: '1',
            title: 'Room A'
        },
        {
            id: '2',
            title: 'Room B'
        }
    ]
});

calendar.render();
});

1 个答案:

答案 0 :(得分:1)

很抱歉造成混乱。我在正常的开始/结束事件中使用了日期时间格式,因此我假设可以将这种逻辑传递给startTime和endTime。您是对的,我误读了文档。

我将startTime和endTime更改为在数据库中键入“ time”,并且正在加载显示的时间。

如果还有其他人发现它有用,则startRecur和endRecur字段也以'date'的形式存储在我的数据库中。我仅使用像'2019-05-13'这样的日期来使它们工作。

如果在我的数据库中填充了这些字段(重复发生的事件字段),那么我将不再在通常用于显示正常事件的“开始”和“结束”字段中存储任何内容!话虽如此,我还使用'start'和'end'日期参数从数据库中获取日期,以便在用户向前或向后移动日历时根据需要加载。

为了使我的重复性事件有效,我进行了如下查询:

SELECT non_recurring_event_fields_here FROM appointments appts WHERE (appts.start BETWEEN '".$start."' AND '".$end."') 

    UNION ALL

SELECT recurring_event_fields_are_here FROM appointments appts WHERE appts.start IS NULL

之后通过执行UNION ALL查询,它将捕获我所有的重复事件并在客户端显示(由于fullcalendar的js),但是它们是在我的数据库中设计的:具有startRecur,endRecur,startTime,endTime,daysOfWeek等

ADyson,我现在可以根据您的评论和建议了解重复事件的工作方式。我知道到目前为止,您对我从3升级到fullcalendar 4的帮助对我有多大帮助,一旦完成,我将为该许可证付费,因此您的工作不会浪费。

再次感谢。