2016-10-09 2 views
0

Ich baue ein existierendes Projekt neu auf, in dem ich Zeitzonenunterstützung benötige. Die Ereignisse werden von einem json-feed gerendert. Beispieldaten:Aktiviere Zeitzone auf FullCalendar

[{ 
    "id":"1", 
    "title":"Titel", 
    "start":"2016-10-08T12:00:00+02:00", 
    "end":"2016-10-08T12:30:00+02:00", 
}] 

Wie Sie sehen, hat das Ereignis Zeitzone-Daten. (2016-10-08T12:00:00+02:00)

Ich möchte eventDrop verwenden, um ein Ereignis zu aktualisieren, ein, wenn der Benutzer per Drag & Drop ein Ereignis, die Daten (eventId, START_TIME end_time) an die PHP gesendet wird, die die Datenbank aktualisiert.

Mein PHP-Skript sollte die empfangene start_time & end_time in UTC umwandeln und in die Datenbank schreiben.

Das Problem ist, dass Vollkalender die Zeitzone des Ereignisses nicht an meine PHP übergeben. Ich versuchte, vorbei so etwas wie:

event_start: moment(event.start).format("YYYY-MM-DD HH.mm:ssZZ"), 

Die Daten, die ich bekommen, ist so etwas wie:

event_start: 2016-10-08 12.00:00+0000 

Und ich erwartet hätte es so etwas wie:

event_start: 2016-10-11 12.00:00+0200 

Mit der Zeitzone-Informationen Ich könnte es leicht in UTC umwandeln.

Wie kann ich auf der PHP-Seite Zugriff auf die Zeitzone haben?

Antwort

0

Sie müssen die timezone Eigenschaft wahrscheinlich auf "UTC" setzen. Also, so etwas wie:

$('#calendar').fullCalendar({ 
     events: [{ 
      "id":"1", 
      "title":"Title", 
      "start":"2016-10-08T12:00:00+02:00", 
      "end":"2016-10-08T12:30:00+02:00" 
     }], 
     timezone: 'UTC' 
    }); 

Danach, wenn Sie die Ereignisse abrufen, sollten Sie eine tzm: 120 auf dem start jedes Ereignis sehen und die korrekte Zeitzone auf Server-Seite greifen können.

Ich habe erstellt this jsfiddle mit einer Schaltfläche, die die Ereignisse abruft und wo Sie dies überprüfen können.


Okay, wenn Sie die Datetime zu erhalten, wie es Sie haben zwei Möglichkeiten ist:

  1. Stellen Sie die timezone Eigenschaft auf den lokalen Sie benötigen. wenn Sie eine 00:00+02:00 Zum Beispiel verwenden, können Sie die Zeitzone zu timezone: 'Europe/Belgrade'

  2. einfach nicht setzen die timezone überhaupt gesetzt (lassen Sie es auf den Standard false)

Dann können Sie Holen Sie sich die Datetime mit event.start.format(). Überprüfen Sie this fiddle für eine Demo.

+0

Vielen Dank für Ihre Antwort. Ich denke, ich habe auch versucht, die Zeitzone Eigenschaft, aber schauen Sie auf Ihre Geige: Die Zeit auf Ereignis im Kalender zeigt 10:00 (UTC). Es sollte 12:00 anzeigen? – Walhalla

+0

@Walhalla Überprüfen Sie die aktualisierte Antwort. Ich denke, das ist was du brauchst. Vielen Dank! –

+0

Vielen Dank für Ihre Hilfe. Ich bin ein paar Schritte weiter.Es ist ein bisschen verwirrend. Ich denke, die TZ sollte auf Benutzer TZ-String wie "Europa/Belgrad" eingestellt werden. Wenn diese Option gesetzt ist, gibt der FC diese Informationen automatisch über die json-Anfrage weiter. Wenn der TZ dynamisch umgeschaltet wird, werden die Ereignisse von JS nicht neu berechnet. Sie müssen die Zeitzone erneut an PHP übergeben, die die geänderten Ereigniszeit (en) berechnen sollte. Im Moment habe ich hier zu kämpfen: http://stackoverflow.com/questions/39964152/eventdrop-js-help-needed-to-dynamically-change-fc-option-jsfiddle-example – Walhalla

Verwandte Themen