Datums- und Uhrzeitwerte lesen und schreiben
Sie lesen Datumswerte und Zeitstempel nach ISO 8601 (Profil nach RFC 3339) in
VBA-Werte vom Typ Date und schreiben Date-Werte so, dass andere Systeme sie richtig lesen.
Lösungsüberblick
JSON kennt keinen Datumstyp; Datumswerte werden als Zeichenfolgen nach ISO 8601 übertragen. GetDate (und
JValue.DateValue) werten sie aus. JDoc.DateZone legt fest, was mit einer Uhrzeit geschieht, die eine Zone trägt
(Z, +02:00). Ein Date wird als ISO 8601 ohne Zone geschrieben.
Umsetzung
Dim doc As New JDoc
doc.LoadJson "{""due"": ""2026-09-25"", ""created"": ""2026-09-25T12:30:00Z""}"
Debug.Print doc.GetDate("$.due") ' 25.09.2026
Debug.Print doc.GetDate("$.created") ' 25.09.2026 14:30:00 in Central European Summer Time (jdzLocal)
doc.DateZone = jdzUtc
Debug.Print doc.GetDate("$.created") ' 25.09.2026 12:30:00
doc.DateZone = jdzAsWritten
Debug.Print doc.GetDate("$.created") ' 25.09.2026 12:30:00, zone ignored
doc.SetValue "$.shipped", Now ' "2026-09-26T09:15:00" (no zone)
doc.SetValue "$.day", Date ' "2026-09-26" (time 0 writes the date only)
Hinweise
jdzLocal(Standard) rechnet nach den Zeitzonenregeln von Windows um, einschließlich der Sommerzeit am jeweiligen Datum; der Wert lässt sich daher richtig mitNow()vergleichen.- Wählen Sie
jdzUtc, wenn die Datenbank UTC speichert, undjdzAsWritten, wenn der Dienst Ortszeiten mit einer Zone schreibt, die so angezeigt werden sollen, wie sie geschrieben sind. - Ein Dienst, der UTC erwartet, braucht einen UTC-Wert: Rechnen Sie vor dem Schreiben um, denn ein VBA-
Datehat keine Zone und wird so geschrieben, wie es ist. - Eine Zeichenfolge, die nicht ISO 8601 entspricht, löst
jeTypeMismatchaus; mit Ersatzwert wird der Ersatzwert nur für einen fehlenden Pfad odernullzurückgegeben, nicht für ein fehlerhaftes Datum.
Verwandte Themen
de/wiki/msaccess/json/how-to/dates-and-time-zones.txt · Last modified: by Wolfgang van der Stille