DateTime

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

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

integer

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

integer

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

integer

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

integer

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

seconds

integer

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

integer

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

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.

TimeZone

Reprezentuje strefę czasową z bazy danych stref czasowych IANA.

Zapis JSON
{
  "id": string,
  "version": string
}
Pola
id

string

Strefa czasowa z bazy danych stref czasowych IANA. Na przykład „Ameryka/Nowy_Jork”.

version

string

Opcjonalnie. Numer wersji bazy danych stref czasowych IANA. Na przykład „2019a”.