Reprezentuje czas urzędowy (lub czasami czas fizyczny).
Ten typ może reprezentować czas cywilny na kilka sposobów:
- Gdy parametr utcOffset jest ustawiony, a parametr timeZone nie jest ustawiony: czas cywilny w dniu kalendarzowym z określonym przesunięciem względem czasu UTC.
- Gdy ustawiona jest wartość timeZone, a wartość utcOffset nie jest ustawiona: czas lokalny w dniu kalendarzowym w określonej strefie czasowej.
- Jeśli nie ustawiono ani timeZone, ani utcOffset: czas cywilny w dniu kalendarzowym w czasie lokalnym.
Data jest podana w kalendarzu gregoriańskim.
Jeśli rok, miesiąc lub dzień mają wartość 0, DateTime nie ma odpowiednio określonego roku, miesiąca ani dnia.
Ten typ może też reprezentować czas fizyczny, jeśli wszystkie pola daty i godziny są ustawione i ustawiony jest jeden z przypadków time_offset. Zamiast tego możesz użyć wiadomości Timestamp w przypadku czasu fizycznego. Jeśli w Twoim przypadku użycia chcesz też przechowywać strefę czasową użytkownika, możesz to zrobić w innym polu.
Ten typ jest bardziej elastyczny, niż niektóre aplikacje mogą sobie życzyć. Pamiętaj, aby udokumentować i zweryfikować ograniczenia aplikacji.
| Zapis JSON |
|---|
{ "year": integer, "month": integer, "day": integer, "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer, // Union field |
| Pola | |
|---|---|
year |
Opcjonalnie. Rok daty. Musi mieścić się w zakresie od 1 do 9999 lub wynosić 0, jeśli określasz datę i godzinę bez roku. |
month |
Opcjonalnie. Miesiąc roku. Musi mieścić się w zakresie od 1 do 12 lub wynosić 0, jeśli określasz datę i godzinę bez miesiąca. |
day |
Opcjonalnie. Dzień miesiąca. Wartość musi mieścić się w zakresie od 1 do 31 i być prawidłowa w przypadku danego roku i miesiąca lub wynosić 0, jeśli określasz datę i godzinę bez dnia. |
hours |
Opcjonalnie. Godziny w formacie 24-godzinnym. Wartość powinna mieścić się w zakresie od 0 do 23, a domyślnie wynosi 0 (północ). Interfejs API może zezwalać na wartość „24:00:00” w przypadku takich scenariuszy jak czas zamknięcia firmy. |
minutes |
Opcjonalnie. Minuty w godzinie dnia. Wartość musi mieścić się w zakresie od 0 do 59, domyślnie jest to 0. |
seconds |
Opcjonalnie. sekund w minutach. Zwykle musi mieścić się w zakresie od 0 do 59, domyślnie 0. Interfejs API może zezwalać na wartość 60, jeśli dopuszcza sekundy przestępne. |
nanos |
Opcjonalnie. Ułamki sekund w nanosekundach. Musi mieścić się w zakresie od 0 do 999 999 999, domyślnie przyjmuje wartość 0. |
Pole unii time_offset. Opcjonalnie. Określa przesunięcie względem czasu UTC lub strefę czasową wartości DateTime. Dokonaj starannego wyboru, pamiętając, że dane strefy czasowej mogą się w przyszłości zmienić (np. kraj może zmodyfikować daty rozpoczęcia i zakończenia czasu letniego, a przyszłe wartości DateTime w zakresie, którego dotyczy zmiana, zostały już zapisane). Jeśli zostanie pominięta, zakłada się, że data i godzina są podane w czasie lokalnym. time_offset może mieć tylko jedną z tych wartości: |
|
utcOffset |
Przesunięcie względem UTC. Musi być liczbą całkowitą sekund z zakresu od -18 godzin do +18 godzin. Na przykład przesunięcie UTC wynoszące -4:00 będzie przedstawione jako { seconds: -14400 }. Czas trwania w sekundach z maksymalnie 9 miejscami po przecinku, zakończony znakiem „ |
timeZone |
Strefa czasowa. |
TimeZone
Reprezentuje strefę czasową z bazy danych stref czasowych IANA.
| Zapis JSON |
|---|
{ "id": string, "version": string } |
| Pola | |
|---|---|
id |
Strefa czasowa z bazy danych stref czasowych IANA. Na przykład „Ameryka/Nowy_Jork”. |
version |
Opcjonalnie. Numer wersji bazy danych stref czasowych IANA. Na przykład „2019a”. |