Kendo DateTimePicker Nicht Umgang mit UTC-Offset
Sind wir mit dem Kendo-datetimepicker, umgesetzt mit dem AngularJS-Direktiven:
<input type="text" kendo-date-time-picker k-ng-model="TheDateModel">
Wo: TheDateModel = 2016-02-15 20:58:24.0000000 +00:00
Ich bin in der CST-Zeitzone, die -6 Stunde offset von der GMT. Das aktuelle Ergebnis der datetimepicker zeigt eine Zeit von 8:58 pm, aber mein erwartetes Ergebnis ist 2:58 pm.
Was in der Welt mache ich falsch?
InformationsquelleAutor Mike | 2016-02-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haftungsausschluss: ich arbeite für die Kendo-UI-team
Die Kendo-UI-Datepicker verwendet JavaScript-Date-Objekt, das intern zu halten, die ausgewählten Datums-Wert. Wie Sie wahrscheinlich wissen, er verwendet immer die lokale (browser) timezone. Wir versuchten zu erklären, dass der VORBEHALT in unsere docs zu:
Durch dieses standardmäßige Verhalten, wird das widget verwenden, die bereits konvertiert Date-Wert (mit den angewandten lokale Zeitzone). Die widgets nicht Bearbeiten Sie den Wert der Zeitzone, da Sie nicht über genügend Informationen verfügen, wie zu tun.
Lösung
Ist der beste Ansatz in diesem Fall ist die Umwandlung von Datums-Zeichenketten (wie die, die Sie erwähnt "2016-02-15 20:58:24.0000000 +00:00") manuell vor dem füttern das DatePicker-widget. Zum Beispiel, hier ist ein möglicher Ansatz, das zu tun:
Beachten Sie, wie der Wert wird analysiert und dann angepasst in die
loadData
Methode. Ähnliche Sache getan werden sollte durch den Entwickler, dass die Bedürfnisse für die Handhabung der verschiedenen TZ in Ihrem app.Ja, Sie haben absolut Recht. Die Date-Instanz ehrt nur die änderung der Sommerzeit für die lokale Zeitzone. , Die being said, Sie können simulieren verschiedene TZ-wenn der Sommer Zeitumstellung. Die gleiche Einschränkung gilt für das DatePicker-widget erbt die gleiche Einschränkung. Alle zulässigen Lösungen, die aus der Verwendung von benutzerdefinierten Datums-Strukturen zu arbeiten, nur mit UTC Millisekunden, nicht mit einem widget, das verwendet die Date-Objekte intern. Die zuverlässigste Lösung sein wird, um design-custom-widget-funktioniert nur spezielle Datenstruktur, die ignoriert lokalen änderungen der Sommerzeit.
InformationsquelleAutor George K
Also ich fand die Lösung für mein problem. First off für Klarheit, und sorry für die Fehlinformation, aber mein date kam von dem server als 2016-02-15T20:58:24.0000000+00:00 - fügen Sie die T und entfernen Sie alle Leerzeichen.
Alle, die getan werden musste, war das hinzufügen der k-parse-Formate Attribut der Richtlinie wie folgt:
Boom, der Auffassung und der offset der aktuellen Zeitzone, und richtig analysiert und zeigt das Datum und die Zeit. Just bewusst sein, dass, wenn Sie geben Sie Ihren eigenen parsing-Formaten, um alle möglichen Formate, die Ihre Termine werden könnte.
Zum Beispiel, ich lief dann in ein problem, wo ich Millisekunden größer als 0, kommt auf meinen Termin: 2016-02-15T20:58:24.1234567+00:00. Dieser brach den datetimepicker wieder. Einfacher fix: gerade geändert meine parsing-format: yyyy-MM-ddTHH:mm:ss.fffffffzzz. Stellen Sie sicher, dass die Anzahl der f größer als oder gleich der Anzahl der möglichen Millisekunden.
InformationsquelleAutor Mike
Ich habe unten diese Straße und musste um dies zu implementieren:
http://www.telerik.com/support/code-library/using-utc-time-on-both-client-and-server-sides
InformationsquelleAutor jaredbaszler