Farbschema: Hell
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Office JSON » how-to » Branje in pisanje datumov in časov

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 z Now().
  • jdzUtc izberite, kadar podatkovna zbirka hrani čas UTC, jdzAsWritten pa, 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 Date nima č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 ali null, 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