完整日历-结束/开始事件的日期格式

fullcalendar - date format for end/start events

本文关键字:事件 日期 格式 开始 日历 结束      更新时间:2023-09-26

我希望这是一个基本的问题。我没有在完整日历中看到日历事件,我认为问题是我试图用于开始/结束事件的日期格式。我试图通过加载JSON事件来设置一个基本的日历。以下是我的JSON输出(为了不占用太多空间,只保留了一个事件):

[{"id":"89","title":"A Title","start":"June 2nd 2015","end":"August 14th 2015"}]

我的javascript是这样的:

$(document).ready(function() {
    $('#calendar').fullCalendar({
        editable: false,
        events: "data.php"
    });
});

还是很基本的。我肯定知道,事件未出现的问题是由于我使用的日期格式,但我不确定如何告诉fullCalendar使用MMMM Do YYYY格式的开始/结束事件与moment.js。有人对如何做到这一点有什么建议吗?

编辑:

尝试在这些行中添加一些东西…但还是没有运气:

var start = moment(event.start).format("MMMM Do YYYY");
var end = moment(event.end).format("MMMM Do YYYY");

我不确定这是否会被认为是一个答案或更多的变通方法,但我还是会把它作为一个答案。

我最终只是按照Bruno在上面评论中建议的那样在json输出中转换日期格式。有点希望我可以用javascript解决这个问题,但是经过几个小时的尝试,我永远无法让事件显示在日历中。

我将继续发布我的php源代码给那些好奇的人(只是显示开始日期):

    $start = $row['startdate'];
    $start_obj = new 'DateTime($start);
    $events['start'] = $start_obj->format('Y-m-d');

我通过为事件定义一个函数来完成类似的事情,遍历数据,使用我想要的格式为start字段创建moment.js对象。文档提供了如何完成此任务的基础知识。

编辑:我从文档中复制了这个例子,并使用moment.js修改了开始时间。

$('#calendar').fullCalendar({
events: function(start, end, timezone, callback) {
    $.ajax({
        url: 'myxmlfeed.php',
        dataType: 'xml',
        data: {
            // our hypothetical feed requires UNIX timestamps
            start: start.unix(),
            end: end.unix()
        },
        success: function(doc) {
            var events = [];
            $(doc).find('event').each(function() {
                events.push({
                    title: $(this).attr('title'),
                    start: moment($(this).attr('start'), 'MMMM Do YYYY') // will be parsed
                    });
                });
                callback(events);
            }
        });
    }
});