Reprezentuje czas cywilny (lub czasem czas fizyczny).
Ten typ może odnosić się do czasu cywilnego na kilka sposobów:
- Gdy zasada utcOffset jest ustawiona, a strefa czasowa jest nieskonfigurowana: czas cywilny w dniu kalendarzowym z określonym przesunięciem względem czasu UTC.
- Gdy strefa czasowa jest ustawiona, a wartość utcOffset nie jest skonfigurowana: czas cywilny w dniu kalendarzowym w danej strefie czasowej.
- Gdy nie ustawiono strefy czasowej ani utcOffset: czas cywilny danego dnia kalendarzowego czasu lokalnego.
Data zależy od kalendarza proleptycznego gregoriańskiego.
Jeśli rok, miesiąc lub dzień mają wartość 0, przyjmuje się, że parametr DateTime nie ma odpowiednio określonego roku, miesiąca ani dnia.
Tego typu można też używać do reprezentowania czasu fizycznego, jeśli wszystkie pola daty i godziny są skonfigurowane oraz ustawiono oba przypadki pola time_offset
. Zamiast tego rozważ użycie komunikatu Timestamp
w czasie fizycznym. Jeśli w Twoim przypadku chcesz też przechowywać strefę czasową użytkownika, możesz to zrobić w innym polu.
Ten typ jest bardziej elastyczny niż niektóre aplikacje. Udokumentuj i zweryfikuj ograniczenia aplikacji.
Zapis JSON |
---|
{ "year": integer, "month": integer, "day": integer, "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer, // Union field |
Pola | |
---|---|
year |
Opcjonalnie: Rok. Wartość musi mieścić się w przedziale od 1 do 9999 lub mieć wartość 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 0 w przypadku określenia daty i godziny bez miesiąca. |
day |
Opcjonalnie: Dzień miesiąca. Musi mieć wartość od 1 do 31 i prawidłowy dla roku i miesiąca lub mieć wartość 0, jeśli określasz datę i godzinę bez dnia. |
hours |
Opcjonalnie: Godziny dnia w formacie 24-godzinnym. Wartość powinna mieścić się w zakresie od 0 do 23. Domyślnie ustawiona jest wartość 0 (północ). Interfejs API może zezwolić na wartość „24:00:00” w takich sytuacjach jak zamknięcie firmy. |
minutes |
Opcjonalnie: Minuty dnia. Musi mieścić się w przedziale od 0 do 59. Domyślna wartość to 0. |
seconds |
Opcjonalnie: Sekundy czasu trwania. Zwykle musi mieścić się w zakresie od 0 do 59. Domyślna wartość to 0. Interfejs API może akceptować wartość 60, jeśli zezwala na użycie sekund przestępnych. |
nanos |
Opcjonalnie: Ułamki sekund w nanosekundach. Musi mieścić się w zakresie od 0 do 999 999 999. Domyślna wartość to 0. |
Pole sumy time_offset . Opcjonalnie: Określa przesunięcie czasu UTC lub strefę czasową godziny DateTime. Dobrze się zastanów, ponieważ dane strefy czasowej mogą się w przyszłości zmienić (na przykład kraj zmieni daty rozpoczęcia i zakończenia czasu letniego, a przyszłe daty i godziny z odpowiedniego zakresu zostały już zapisane). Jeśli jej nie podano, przyjmuje się, że ustawiona jest wartość DateTime w czasie lokalnym. time_offset może mieć tylko jedną z tych wartości: |
|
utcOffset |
Przesunięcie UTC. Musi to być pełne sekundy z zakresu od -18 godzin do +18 godzin. Na przykład przesunięcie w czasie UTC wynoszącym –4:00 zostanie przedstawione jako { s: -14400 }. Czas trwania w sekundach składający się z maksymalnie 9 cyfr po przecinku, kończący się cyfrą „ |
timeZone |
Strefa czasowa. |
TimeZone
Reprezentuje strefę czasową z bazy danych stref czasowych IANA.
Zapis JSON |
---|
{ "id": string, "version": string } |
Pola | |
---|---|
id |
Strefa czasowa bazy danych strefy czasowej IANA, np. „Ameryka/Nowy_Jork”. |
version |
Opcjonalnie: Numer wersji bazy danych strefy czasowej IANA, np. „2019a”. |