jQuery完整日历 - 在页面加载时事件时间没有正确绑定

时间:2016-03-13 14:25:54

标签: jquery asp.net .net fullcalendar asp.net-ajax

问题:在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

JsonResponse

database

在Default.aspx中,Event1已启动&amp;结束时间 - 数据库中的12:00:00 AM到1:00:00 AM,但它在06:30:00 - 07:00:00插槽下呈现不正确。

非常感谢任何帮助。

提前致谢

2 个答案:

答案 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),