Datum, prebran iz JSON, je zamaknjen za nekaj ur
Časovni žig, kot je "2026-09-25T12:30:00Z", se v VBA prebere kot 14:30, ali pa je datum, zapisan v
JSON, v drugem sistemu prikazan zamaknjeno.
Okolje
Vse različice WKL Office JSON.
Vzrok
- Branje: čas s časovnim pasom (
Zza UTC,+02:00) se pretvori glede naJDoc.DateZone. Privzeta vrednostjdzLocalpretvarja v lokalni čas sistema Windows, zato med srednjeevropskim poletnim časom12:30Zpostane14:30. To je pravilno, kadar vrednost primerjate zNow(), ne pa, kadar podatkovna zbirka hrani čas UTC. - Pisanje: vrednost VBA
Datenima časovnega pasu in se zapiše brez njega. Prejemni sistem, ki predpostavlja UTC, lokalni čas prebere kot UTC.
Rešitev
- Za podatkovne zbirke, ki hranijo čas UTC, pred branjem nastavite
doc.DateZone = jdzUtc. - Če želite čase ohraniti takšne, kot so zapisani, nastavite
doc.DateZone = jdzAsWritten. - Pred zapisom v sistem, ki pričakuje UTC, lokalni čas v VBA pretvorite v UTC in časovni pas nizu dodajte sami, na primer
doc.SetValue "$.at", Format(utcTime, "yyyy-mm-dd\Thh:nn:ss") & "Z".
sl/wiki/msaccess/json/troubleshooting/date-shifted.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille