我有一个使用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();
});
这是正确的做法吗?或者这是一个错误?