问题:在document.ready上,完整的日历会绑定所有活动详情,包括开始和播放。结束日期,但不是时间,即事件按预期在适当的日期时段呈现,但不在适当的时间段。
Default.aspx:渲染完整日历。
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
defaultView: 'agendaWeek',
eventClick: updateEvent,
selectable: true,
selectHelper: true,
select: selectDate,
editable: true,
events: "JsonResponse.ashx",
eventDrop: eventDropped,
eventResize: eventResized,
eventRender: function(event, element) {
//alert(event.title);
element.qtip({
content: {
text: qTipText(event.start, event.end, event.description),
title: '<strong>' + event.title + '</strong>'
},
position: {
my: 'bottom left',
at: 'top right'
},
style: { classes: 'qtip-shadow qtip-rounded' }
});
}
});
注意:请找到数据库附带的shapshots,default.aspx&amp; JsonResponse.ashx json结果。
在Default.aspx中,Event1已启动&amp;结束时间 - 数据库中的12:00:00 AM到1:00:00 AM,但它在06:30:00 - 07:00:00插槽下呈现不正确。
非常感谢任何帮助。
提前致谢
答案 0 :(得分:1)
Event1
start Date(1457893800000)
等于Sun,2016年3月13日18:30:00 GMT。
因此,这可能是一个时区问题:您的日历在GMT中显示事件,而您需要在当地时间。
我的建议是将数据库中的时间值保持原样,即以UTC时间为单位,并在浏览器中处理当地时间的转换。
有关详细建议,请参阅FullCalendar文档中的timezone。
答案 1 :(得分:1)
检查完代码后,我发现问题在于您通过设置更改了保存到数据库的时间.ToUniversalTime()
因此,当您在日历中选择7AM时,它会将11AM保存到数据库中。
start = Convert.ToDateTime(improperEvent.start).ToUniversalTime(),
end = Convert.ToDateTime(improperEvent.end).ToUniversalTime(),
如果您只是在开始日期和结束日期删除.ToUniversalTime(),它会将正确的日期和时间保存到数据库中,然后在刷新后加载正确的日期和时间。
start = Convert.ToDateTime(improperEvent.start),
end = Convert.ToDateTime(improperEvent.end),