DateTime

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

integer

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

integer

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

integer

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

integer

Opcjonalnie: Minuty dnia. Musi mieścić się w przedziale od 0 do 59. Domyślna wartość to 0.

seconds

integer

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

integer

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

string (Duration format)

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ą „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 bazy danych strefy czasowej IANA, np. „Ameryka/Nowy_Jork”.

version

string

Opcjonalnie: Numer wersji bazy danych strefy czasowej IANA, np. „2019a”.