Branje in pisanje datumov in časov
Datume in časovne žige ISO 8601 (profil RFC 3339) preberete v vrednosti VBA Date, vrednosti Date pa zapišete tako,
da jih drugi sistemi pravilno preberejo.
Pregled rešitve
JSON nima datumskega tipa; datumi se prenašajo kot nizi ISO 8601. GetDate (in JValue.DateValue)
jih razčlenita. JDoc.DateZone določa, kaj se zgodi s časom, ki nosi časovni pas (Z,
+02:00). Pri zapisu vrednosti Date nastane ISO 8601 brez časovnega pasu.
Izvedba
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)
Opombe
jdzLocal(privzeto) pretvarja po pravilih časovnih pasov sistema Windows, vključno s poletnim časom na dani datum, zato se vrednost pravilno primerja zNow().jdzUtcizberite, kadar podatkovna zbirka hrani čas UTC,jdzAsWrittenpa, kadar storitev zapisuje lokalne čase s časovnim pasom, ki naj ostanejo takšni, kot so prikazani.- Storitev, ki pričakuje UTC, potrebuje vrednost v UTC: pretvorite jo pred zapisom, ker vrednost VBA
Datenima časovnega pasu in se zapiše takšna, kot je. - Niz, ki ni ISO 8601, sproži
jeTypeMismatch; če podate nadomestno vrednost, se ta vrne samo za manjkajočo pot alinull, ne pa za napačno oblikovan datum.
Sorodne teme
sl/wiki/msaccess/json/how-to/dates-and-time-zones.txt · Zuletzt geändert: von Wolfgang van der Stille