1

こんにちはこの要素 、Jquery FullCalendar に表示する必要がある rhis 要素があります。

    <script type="text/javascript">

        $(document).ready(function () {

                calendarcreate();
                var obj;
            });

           function calendarcreate() {
                $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: "{}",
                dataType:"json",
                url: "Calendario.aspx/GetEvents",                
                success: function (data) {
                    $('#<%=fullcal.ClientID%>').fullCalendar({
                        firstDay: 1,
                        monthNames: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],
                        monthNamesShort: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'],
                        dayNames: ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'],
                        dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
                        buttonText: {
                            today: 'Oggi',
                            month: 'Mese',
                            day: 'Giorno',
                            week: 'Settimana',
                            prev: 'Prec',
                            next: 'Succ'
                        },
                        header: {
                            left: 'today',
                            center: 'title',
                            right: 'prev,next'
                        },
                        timeFormat: "H:mm",
                        slotLabelFormat: "H:mm",
                        slotLabelInterval: '00:30:00',
                        defaultView: "agenda",
                        allDaySlot: true,
                        allDayText: 'Tutto il Giorno',
                        minTime: "08:00:00",
                        maxTime: "22:00:00",
                        displayEventEnd: true,
                        axisFormat: 'H:mm',
                        titleFormat: 'D MMMM YYYY',
                        columnFormat: 'ddd D/M',
                        //inserimento appuntamenti da Ajax
                        events: $.map(data.d, function (item, i) {
                            var event = new Object();
                            event.id = item.EventID;

                            alert(item.StartHour);
                            alert(item.EndHour);
                            event.start = new Date(item.DateYear, item.DateMonth - 1, item.DateDay, item.StartHour, item.StartMinute);
                            event.end   = new Date(item.DateYear, item.DateMonth - 1, item.DateDay, item.EndHour, item.EndMinute);
                            event.title = item.EventName;
                            event.color = item.Color;

                            event.allDay = false;

                            return event;
                        })
                    });
                },
                error: function (XMLHttpRequest, textStatus, errorThrown)
                { debugger; }
            }); 

        }
    </script>

2016 年 9 月 16 日のデータのイベントは次のとおりです。

 - Id = 6, From 11.30 To 12.30
 - Id = 7, From 10.30 To 11.30

FullCalendar のイベント作成に配置したアラートでは、適切な終了時間が表示されます。したがって、データ 2016-09-16 のイベントについては、12 と 11 でアラートが表示されます。

問題は、FullCalendar が次のようなイベントを表示することです。

 - Id = 6 From 11.30 To 13.30
 - Id = 7 From 10.30 To 12.30

だから常に 2 時間の長さ

FullCalendar レンダリング イベント

4

1 に答える 1

1

FullCalendarmoment.jsは、JavaScript オブジェクトではなくオブジェクトでネイティブに動作しDateます。moment.jsライブラリはすでに fullCalendar に含まれています。

したがって、これを置き換えるのが最善です:

event.start = new Date(item.DateYear, item.DateMonth - 1, item.DateDay, item.StartHour, item.StartMinute);
event.end   = new Date(item.DateYear, item.DateMonth - 1, item.DateDay, item.EndHour, item.EndMinute);

これとともに:

event.start = moment({ y: item.DateYear, M: item.DateMonth - 1, d: item.DateDay, h: item.StartHour, m: item.StartMinute, s: 0, ms: 0});
event.end   = moment({ y: item.DateYear, M: item.DateMonth - 1, d: item.DateDay, h: item.EndHour, m: item.EndMinute, s: 0, ms: 0});

また、+01:00 タイムゾーン (イタリア) にいますか? 問題はそれによって引き起こされる可能性があります。その場合、fullCalendar にはタイムゾーンを適切に処理できるオプションがあります。

于 2016-09-21T10:13:22.243 に答える