Fullcalendar - 在eventRender上未正确显示日期/时间

时间:2015-06-11 09:07:58

标签: fullcalendar momentjs

我有一个使用Signal R的实时多时区应用程序,所有日期时间都使用UTC进行广播,并使用时刻区域操作到正确的时区。这样做的原因是,如果我们有很多人使用不同的时区登录,我们将不得不向已经显示该人的正确日期时间的个人广播每个更新,因为对于1个广播和操纵客户端。当用户登录时,时区存储为字符串,并且不依赖于浏览器。

据我了解,FullCalendar不会使用Timezone操纵日期时间(我可能错了)。我查看了您网站上的示例,并且JSON中的所有日期都已转换,这对我来说不是一个选项。

我采取的路线是操纵eventRender中的日期。

问题在于,当您第一次加载时,日历会以UTC格式显示它们,如果您更改了视图,它会将其更正为正确的日期时间。看到下面的小提琴,它加载为上午11点然后如果您交换视图它显示为2pm这是所需的时间。我以伊斯坦布尔为例。

http://jsfiddle.net/JGuymer/oa4ahubo/6/

$(document).ready(function() {
    function renderCalendar() {
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            editable: true,
            timezone: 'Europe/Istanbul',
            eventLimit: true, // allow "more" link when too many events
            events: [{"id":1026,"taskTypeId":4,"title":"(New Appointment)","start":"2015-06-11T11:00:00Z","end":"2015-06-11T12:00:00Z","allDay":false,"url":null,"location":"","people":null,"className":"event-appointment"}],
            eventRender: function(event, el) {

                //console.log(event);
                event.start.tz('Europe/Istanbul').format('DD MMM YYYY HH:mm');
                event.end.tz('Europe/Istanbul').format('DD MMM YYYY HH:mm');


            }
        });
    }
    renderCalendar();
});

这是正确的做法吗?或者这是一个错误?

0 个答案:

没有答案