我正在使用更新的fullcalendar(v2.6.1)库,其中添加了更好的时区支持。我的活动安排在晚上8点。我看到事件加载到晚上11点。
当DateTime设置为“start”时,我看到它使用来自DB的数据
我的日历加载如下:
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点展示。
时区:'本地'
时区:'UTC'
更新 - 2016年2月27日
这个问题听起来很熟悉很多帖子我发现读“ignoreTimezone不工作”。我发现fullCalendar ignoreTimezone doesn't seems to work的一个答案解释说ignoreTimezone是一个旧设置。为了解释这一点,我将设置更新为timezone:false使用2.6.1无效。接下来,我找到了旧版本的fullcalendar库(1.5.4)并添加了ignoreTimezone,其中也失败了。
此时我开始寻找不同的库。我在下面的唯一建议暗示使用字符串而不是日期...但事件对象应该使用DateTimes,所以我认为这不会起作用。
还有其他想法吗?
答案 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?)