web-dev-qa-db-ja.com

フルカレンダーの終了日が1日間違っている

FullCalendarを利用した車の予約機能を作成しています。これはcoffescriptファイルです。

    updateEvent = (event, delta, revertFunc) ->
      $.ajax
        type: "PUT"
        dataType: "json"
        success: (data) ->
            alert "Success"
        error: (data) ->
            revertFunc()
            errors = data.responseJSON.reservations[0][1]
            for message of errors
                alert errors[message]
        url: event.updateUrl
        data:
          reservation:
            reservation_start: event.start.format('DD-MM-YYYY')
            reservation_end: event.end.format('DD-MM-YYYY')
            transport_id: event.transport_id
            user_id: event.user_id

$(document).ready ->
  $(".calendar").fullCalendar
    events: gon.path
    eventDrop: updateEvent
    eventResize: updateEvent

そして、これはイベントを含むJSONフィードです。

[{"start":"2014-12-17T00:00:00.000Z","end":"2014-12-21T00:00:00.000Z","title":"Cassio Godinho","url":"/reservas/44/edit","allDay":true,"editable":true,"updateUrl":"/reservation/44","transport_id":1,"user_id":1}]

endの日付は2014-12-21しかし、これは私がカレンダーに持っているものです enter image description here

ドキュメントはこれについて何かを言っています(私は思う):

endParam
It is the moment immediately after the event has ended. For example, if the last full day of an event is Thursday, the exclusive end of the event will be 00:00:00 on Friday!

しかし、この情報をどうするかはよくわかりません...

23
Cássio Godinho

方向のキーワードはexclusiveであるため、指定した時間は日付範囲に含まれません。

したがって、"2014-12-21T00:00:00.000Z"は、イベントが12-21の最初の時点で存在しなくなることを意味します。イベントを12〜21日に処理するには、終了時間を"2014-12-22T00:00:00.000"(12〜22の最初の可能な時間)に設定します。

11
Shaded

私は同じ問題を抱えていましたが、ようやくわかりました。

あなたが終日真を使用した場合、それは時間通りに動作しますドキュメントに従って、私は終日TRUEを使用していました。

最初に終日をFALSEに変更してから、

終了日に$ endDate。 "T23:59:00";を追加しました

これは私のために働いた。

6
user3440787

NextDayThreshold:'00:00 'を設定する必要があり、最終日が表示されます!

2
Sam Pritchard

私は同じ問題を抱えていましたが、時間を試してみましたが、それが解決策でした:)

2014-12-21T00:00:00 => 2014-12-21T23:59:00これで問題が解決します。

2
Elvis Hajdar

最良の部分は、次のように終了日に20:00:00を追加することです。

var ed = $("endDate").val();
newVar = ed+" 20:00:00";

必要なのはそれだけです。

2

イベントに開始時間と終了時間を設定することにより、問題を「修正」しました。

0
Cássio Godinho

まだ有用かどうかはわかりませんが、この方法を使用して、終了日に1日を追加することができます:

$date = new DateTime('2000-01-01');
$date->add(new DateInterval('P0Y0M1DT0H0M0S'));

これにより、終了日が1日増加します。

0
Hamza

私も同じことに直面し、"T23:59:00"を終了日に追加することで解決しました。つまり、"end" => $end_date."T23:59:00"

0
Shafiq

2014年12月21日の0時間、分、秒などに終了日を設定している場合、その日のイベントを表示する時間はありません。

イベントは終日のイベントとして設定されているため、終了日を翌日の0時間に進める必要がある場合がありますが、イベントが落ちるように任意の量(1時間など)だけ時間を進めることもできます目的の終了日の内側で、レンダリングする必要がある終日イベントです。

イベントオブジェクトに、設定可能な期間パラメータが含まれていればいいのですが、少なくともドキュメントにはありません。

0
Ryan McArthur

In Angular終了日時が23:59:59を超える場合、終了日時を現在の時刻に変更 `

this.calendarOptions = {
  editable: false,
  eventLimit: false,
  validRange: {
    start: '',
    end: new Date(new Date().getUTCFullYear(), new Date().getUTCMonth())
  },
  header: {
    left: '',
    center: 'title',
    right: 'prev,next'
  },
  eventSources: [

    // your event source
    {
      events: (start, end, timezone, callback) => {

        var data = [];


        data.Push(new Date("2019-04-11T00:19:02"))
        data.Push(new Date("2019-04-12T00:19:02"))
        data.Push(new Date("2019-04-13T00:19:02"))

        var eventData = [];

        var calendarEvents: CalendarEvents = new CalendarEvents();
        calendarEvents.start = data[0];

        //Change end time, because of when end date time is greator than 23:59:59 then end date not marked
        var m = moment(data[data.length - 1], 'ddd MMM D YYYY HH:mm:ss ZZ');
        m.set({ h: new Date().getHours() });
        calendarEvents.end = m.toDate();

        calendarEvents.allDay = false;
        eventData.Push(calendarEvents);

        callback(eventData);
      },
      color: '#f99500',   // an option!
      textColor: 'black', // an option!
      // displayEventTime: false,
    }
    // any other sources...

  ],
  timeFormat: 'HH:mm'
};

`

0
Anand