DateTime

Reprezentuje czas urzędowy (lub czasami czas fizyczny).

Ten typ może reprezentować czas urzędowy na kilka możliwych sposobów:

  • Gdy parametr utcOffset jest ustawiony, a parametr timeZone nie jest ustawiony: czas urzędowy w dniu kalendarzowym z określonym przesunięciem względem czasu UTC.
  • Gdy ustawiona jest wartość timeZone, a wartość utcOffset nie jest ustawiona: czas urzędowy w dniu kalendarzowym w określonej strefie czasowej.
  • Jeśli nie ustawiono ani timeZone, ani utcOffset: czas urzędowy 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ż służyć do reprezentowania czasu fizycznego, 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 time_offset can be only one of the following:
  "utcOffset": string,
  "timeZone": {
    object (TimeZone)
  }
  // End of list of possible types for union field time_offset.
}
Pola
year

integer

Opcjonalne. 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

integer

Opcjonalne. 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

integer

Opcjonalne. 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

integer

Opcjonalne. 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 godzina zamknięcia firmy.

minutes

integer

Opcjonalne. Minuty w godzinie dnia. Wartość musi mieścić się w zakresie od 0 do 59, domyślnie jest to 0.

seconds

integer

Opcjonalne. Sekundy w minutach danej godziny. 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

integer

Opcjonalne. Ułamki sekund w nanosekundach. Wartość musi mieścić się w zakresie od 0 do 999 999 999, domyślnie przyjmuje wartość 0.

Pole zbiorcze time_offset. Opcjonalne. 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

string (Duration format)

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 „s”. Przykład: "3.5s".

timeZone

object (TimeZone)

Strefa czasowa.