本地端的Fullcalendar时区与服务器不匹配

时间:2016-02-19 03:10:56

标签: jquery datetime timezone fullcalendar

我正在使用更新的fullcalendar(v2.6.1)库,其中添加了更好的时区支持。我的活动安排在晚上8点。我看到事件加载到晚上11点。

SQL Of Event

Custom event class 当DateTime设置为“start”时,我看到它使用来自DB的数据

Console.log

我的日历加载如下:

 function loadCalendar(eventList)
    {
        console.log(eventList);
        $('#div_CalendarViewTab').fullCalendar({
            // put your options and callbacks here
            theme: true,
            height: 500,
            ignoreTimeZone:false,
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay',
            },
            eventClick: function (calEvent, jsEvent, view) {
                     //removed for brevity
                }
        });



        $('#div_CalendarViewTab').fullCalendar('removeEvents');
        $('#div_CalendarViewTab').fullCalendar('addEventSource', eventList);
        $('#div_CalendarViewTab').fullCalendar('rerenderEvents');
    }

这看起来像服务器端问题,还是我错过了fullcalendar中的配置来解释从服务器到本地的时间差异?

更新 - 2016年2月19日

我发现实际上唯一改变显示(日历上的事件)的方法是将时区设置为“UTC”。日历更改为凌晨4点。否则所有其他时区(America / Los_Angeles,America / Chicago,local)都将在晚上11点展示。

时区:'本地'

enter image description here

时区:'UTC'

enter image description here

更新 - 2016年2月27日

这个问题听起来很熟悉很多帖子我发现读“ignoreTimezone不工作”。我发现fullCalendar ignoreTimezone doesn't seems to work的一个答案解释说ignoreTimezone是一个旧设置。为了解释这一点,我将设置更新为timezone:false使用2.6.1无效。接下来,我找到了旧版本的fullcalendar库(1.5.4)并添加了ignoreTimezone,其中也失败了。

此时我开始寻找不同的库。我在下面的唯一建议暗示使用字符串而不是日期...但事件对象应该使用DateTimes,所以我认为这不会起作用。

还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

此解决方案最终出现在对象端,而不是fullcalendar配置。我将Event类对象的“start”变量调整为字符串而不是DateTime。接下来,在我保存开始的任何地方(见下文为EVENTSTART)我使用.ToString(“o”)来获取ISO8601日期(详情:Given a DateTime object, how do I get an ISO 8601 date in string format?

enter image description here