web-dev-qa-db-fra.com

Date de fin du calendrier complet erronée d'un jour

Je suis en train de créer une fonctionnalité de réservation de voiture soutenue par un calendrier complet.

    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

Et ceci est le flux JSON avec les événements.

[{"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}]

La date end est 2014-12-21 mais c'est ce que j'ai sur le calendrier enter image description here

La documentation dit quelque chose à ce sujet (je pense):

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!

Mais je ne sais pas trop quoi faire de cette information ...

21
Cássio Godinho

Je pense que le mot clé dans les instructions est exclusive;.

Donc, dans votre cas, "2014-12-21T00:00:00.000Z" signifierait que l'événement n'existerait plus au tout début de 12-21. Si vous voulez que l'événement se déroule entre 12 et 21, vous voulez définir l'heure de fin à "2014-12-22T00:00:00.000" (première fois possible dans 12 à 22).

8
Shaded

J'ai eu le même problème et j'ai finalement compris.

J'utilisais la journée complète VRAI, conformément à la documentation. Si vous utilisiez la journée complète, cela se comporterait à temps.

donc d'abord, j'ai changé journée complète à FALSE , puis 

dans mon jour de fin j'ai ajouté $ endDate. "T23: 59: 00";

Cela a fonctionné pour moi.

2
user3440787

J'ai eu le même problème, mais j'ai expérimenté avec le temps et c'était la résolution :)

2014-12-21T00: 00: 00 => 2014-12-21T23: 59: 00 Cela résoudra votre problème.

1
Elvis Hajdar

La meilleure partie est ajouter 20:00:00 à la date de fin comme suit: 

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

C'est tout ce dont vous avez besoin.

1
Rudresh Ajgaonkar

"Corrigé" le problème en fixant les heures de début et de fin aux événements.

0
Cássio Godinho

Je ne sais pas si c'est toujours utile, mais vous pouvez utiliser cette méthode, ajoutez un jour à votre date de fin en utilisant:

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

cela incrémentera votre date de fin d'un jour.

0
Hamza

Je faisais également face au même problème et le résolvais en ajoutant "T23:59:00" à la date de fin i.e "end" => $end_date."T23:59:00"

0
Shafiq

Si vous définissez votre date de fin sur 0 heure, minute, seconde, etc. du 21/12/2014, il n'y a pas de temps dans cette journée pour un événement à afficher. 

Il se peut que vous deviez avancer votre date de fin à 0 heure le jour suivant, car la configuration de l'événement est définie comme un événement d'une journée. Toutefois, vous pouvez également vous contenter d'avancer l'heure de n'importe quel montant (telle qu'une heure) afin que l'événement tombe à l’intérieur de la date de fin souhaitée, puis comme événement de la journée.

Ce serait bien si leur objet événement incluait un paramètre de durée que vous puissiez définir, du moins je n'en ai pas vu dans leur documentation.

0
Ryan McArthur

Vous devez définir nextDayThreshold: '00: 00 'et le dernier jour s'affichera!

0
Sam Pritchard