fullcalendar - 结束/开始事件的日期格式

时间:2015-07-29 03:22:14

标签: javascript json fullcalendar momentjs

这(我希望)是一个基本问题。我没有在fullcalendar中看到日历事件,我相信问题是我尝试用于开始/结束事件的日期格式。我试图通过加载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");

2 个答案:

答案 0 :(得分:1)

我不确定这是否会被视为答案或更多的解决方法,但无论如何我都会将其作为答案发布。

我最后只是转换了json输出中的日期格式,正如Bruno在上面的评论中所建议的那样。希望我能用javascripting想出来,但经过几个小时的尝试,我永远无法在日历中显示这些事件。

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

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

答案 1 :(得分:0)

我通过为事件定义一个函数来完成类似的事情,使用我想要的格式遍历为moment.js字段创建start对象的数据。 docs具有如何实现此目的的基础知识。

编辑:我复制了docs中的示例,并使用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);
            }
        });
    }
});