Ein aus JSON gelesenes Datum ist um einige Stunden verschoben
Ein Zeitstempel wie "2026-09-25T12:30:00Z" kommt in VBA als 14:30 an, oder ein nach JSON geschriebenes Datum
erscheint in einem anderen System verschoben.
Umgebung
Alle Versionen von WKL Office JSON.
Ursache
- Beim Lesen: Eine Uhrzeit mit Zone (
Zfür UTC,+02:00) wird gemäßJDoc.DateZoneumgerechnet. Der StandardwertjdzLocalrechnet in die Ortszeit von Windows um; in der mitteleuropäischen Sommerzeit wird aus12:30Zdaher14:30. Das ist richtig, wenn der Wert mitNow()verglichen wird, aber nicht, wenn die Datenbank UTC speichert. - Beim Schreiben: Ein VBA-
Datehat keine Zone und wird ohne Zone geschrieben. Ein empfangendes System, das UTC annimmt, liest eine Ortszeit als UTC.
Lösung
- Bei Datenbanken, die UTC speichern, setzen Sie vor dem Lesen
doc.DateZone = jdzUtc. - Um Uhrzeiten so zu behalten, wie sie geschrieben sind, setzen Sie
doc.DateZone = jdzAsWritten. - Bevor Sie an ein System schreiben, das UTC erwartet, rechnen Sie die Ortszeit in VBA in UTC um und hängen die Zone selbst an eine Zeichenfolge an, zum Beispiel
doc.SetValue "$.at", Format(utcTime, "yyyy-mm-dd\Thh:nn:ss") & "Z".
de/wiki/msaccess/json/troubleshooting/date-shifted.txt · Zuletzt geändert: von Wolfgang van der Stille