2014-12-10 6 views
13

Sto effettuando una funzionalità di prenotazione di auto con supporto fullCalendar. Questo è il file coffescript.Data di fine full-down errata di un giorno

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 

E questo è il feed JSON con gli eventi.

[{"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 data end è 2014-12-21 ma questo è quello che ho sul calendario enter image description here

La documentazione dice qualcosa su questo (credo):

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! 

ma im non del tutto sicuro di quello che a che fare con questa informazione ...

risposta

6

Penso che la parola chiave nelle direzioni sia exclusive quindi qualunque sia l'ora specificata non verrà inclusa nell'intervallo di date.

Quindi nel tuo caso "2014-12-21T00:00:00.000Z" significherebbe che l'evento non esisterà più all'inizio del 12-21. Se si desidera che l'evento passi 12-21, impostare l'ora di fine su "2014-12-22T00:00:00.000" (prima possibile in 12-22).

+0

Questo non va bene per chi utilizza più eventi giornalieri per tutto il giorno, poiché l'aggiunta di un orario impedisce di ridimensionare gli eventi nella vista mensile. Sarebbe bello se ci fosse uno spessore che ha costretto solo più eventi giornalieri di tutto il giorno a rendere la data di fine. Sarebbe inoltre necessaria una correzione per ridimensionare questi eventi poiché la data di fine è sempre impostata su un giorno in più rispetto alla visualizzazione visiva. – JerryA

+2

In tal modo, incremento la data. Va bene, non c'è qualche correzione che fullcalendar ha già fornito? C'è un modo per includere anche il giorno della fine? –

0

Se si imposta la data di fine per 0 ore, minuti, secondi, ecc. Del 12-21-2014, non c'è tempo in quel giorno per la visualizzazione di un evento.

Potrebbe essere necessario anticipare la data di fine a 0 ore del giorno successivo poiché l'impostazione dell'evento è un evento per tutto il giorno, tuttavia si può anche andare bene solo avanzando il tempo di qualsiasi importo (ad esempio un'ora) in modo che l'evento rientra nella data di fine desiderata, quindi è un evento per tutto il giorno che deve essere visualizzato.

Sarebbe bello se il loro oggetto evento includesse un parametro di durata che potevi impostare, almeno non ne ho visto uno nella loro documentazione.

+0

Stavo provando l'errore di aggiungere un po 'di tempo all'evento ma non è andato molto bene (quando trascino un evento ne aggiungerei un altro giorno). Ad ogni modo non mi sembra giusto, dal momento che l'evento ha già il valore 'allDay: true' –

1

Ho avuto lo stesso problema, ma ho sperimentato con il tempo e che era la risoluzione :)

2014-12-21T00: 00: 00 => 2014-12-21T23: 59: 00 questa volontà risolvi il tuo problema

+0

Questo è quasi, ma non del tutto corretto: i documenti indicano che' endParam' è il momento "immediatamente * dopo *" alla fine, quindi stai escludendo un minuto in più. –

+0

Ho aggiunto delle volte alla data di fine, ma poi gli eventi non erano più modificabili nella vista mensile. – JerryA

0

"Risolto" il problema impostando le ore di inizio e di fine degli eventi.

+0

ah? puoi spiegare cosa hai fatto esattamente? –

+0

Sì, per favore, elabora - Attualmente sto impostando l'inizio e la fine e ho questo problema. – raison

+0

Puoi ancora ridimensionare l'evento in Vista mese? – JerryA

1

La parte migliore è accodare 20:00:00 per la data di fine come segue:

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

Questo è tutto ciò che serve.

1

Ho avuto lo stesso problema e alla fine ho capito.

Stavo usando l'intera giornata TRUE, come da documentazione se si utilizza full day true si comporterà in tempo.

così prima, ho cambiato giorno intero su FALSE, quindi

ai miei tempi fine ho aggiunto $ endDate "T23: 59: 00";.

Questo ha funzionato per me.

0

Non so se la sua ancora utile, ma è possibile utilizzare questo metodo, aggiungere un giorno per la data di fine utilizzando:

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

questo aumenterà la vostra data di fine di un giorno.

+0

would not '$ date = new DateTime ('2000-01-01'); $ date-> modify ('+ 1 day'); 'essere più leggibile? –

Problemi correlati