Fullcalendar显示“结束日期”休息一天

时间:2015-01-15 10:05:03

标签: javascript json fullcalendar

Fullcalendar显示“结束日期”一天休息 json是12月1日至16日,但日历显示为12日至15日 这是代码

var calCon = $('.cal');
calCon.fullCalendar({
    prev: 'left-single-arrow',
    firstDay: 1,
    weekends:true,
    weekNumbers:true,
    ignoreTimezone:false,
    allDayDefault:true,
    weekNumberCalculation:"ISO",
    defaultView:"basicWeek",
    timeFormat: 'H(:mm)',
    events: {
        url: "/calendarjson.xsp",
        cache: false
    }
})

这里是json

[{"color":"#3a87ad","id":"123","allday":"1","url":"/...","end":"2015-01-16T10:00:00.0+0100","start":"2015-01-12T09:00:00.0+0100","title":"Thomas Adrian"}]

enter image description here

我正在使用allDayDefault因为时间不重要 我做错了什么?

我正在使用最新的fullcalender 2.2.5
我试图改变时间,但它仍然是相同的

2 个答案:

答案 0 :(得分:8)

FullCalendar.js使用独占结束时刻。文档说它here。这意味着事件的结束时刻不属于从开始到结束的时间间隔,而是标记该时间间隔之后的时间点。

这里重点是你将allDay的默认值设置为true。您使用2015-01-16T10:00:00.0+0100作为事件的端点。但是allDay事件不会在fullCalendar内部保留时间信息。它剥离了时间,只保留日期。您使用2015-01-16T10:00:00.0+0100作为端点。时间被剥离并且结束是独占的,这导致2015-01-15T23:59:59.0+0100,您在fullCalendar中看到的结果是什么。你应该使用2015-01-17T00:00:00.0+0100作为你的allDay事件的结束,让它延伸到1月16日23:59:59。

答案 1 :(得分:0)

在CS文件中: // HolidayList是具有属性ID,描述,开始和结束的类

            SqlDataReader reader = SqlHelper.ExecuteReader(ConnStr, CommandType.StoredProcedure, "NameOfStoredProcedure");
            if (reader.HasRows)
            {
                Holiday_List itemObj = null;
                DateTime start, end;
                while (reader.Read())
                {
                    itemObj = new Holiday_List();
                    itemObj.holiday_Id = Convert.ToInt16(reader["holidayID"]);
                    itemObj.description = reader["description1"].ToString();
                    if (reader["date1"] != DBNull.Value)
                    {
                        date = Convert.ToDateTime(reader["date1"]);
                        start = date.AddDays(1);
                        itemObj.date1 = start;
                    }
                    result.Add(itemObj);
                }
            }
            return result;

在CSHTML中:

    $.ajax({
        type: "POST",
        url: '@Url.Action("ActionMethodName", "Controller")',
        contentType: false,
        processData: false,
        success: function (result) {

            if (result != null) {
                $.each(result, function (index, optiondata) {
                    alert(optiondata.date1 + '   ' + optiondata.enddate)
                    holidayList.push({
                        "title": optiondata.description,
                        "start": optiondata.startdate,
                    });
                });
                if (holidayList.length > 0) {
                    $('#calendar').fullCalendar({
                        header: {
                            left: 'prev,next today',
                            center: 'title',
                            right: 'month,basicWeek'
                        },
                        navLinks: true, // can click day/week names to navigate views
                        editable: true,
                        eventLimit: true, // allow "more" link when too many events                            
                        events: holidayList,
                        displayEventTime: false
                    });
                }
            }
        }
    });