DateTime

Rappresenta il tempo civile (o talvolta l'ora fisica).

Questo tipo di rappresentazione può rappresentare un'epoca civile in uno dei pochi modi possibili:

  • Quando utcOffset è impostato e timeZone non è impostato: un'ora civile in un giorno di calendario con un particolare scarto rispetto all'UTC.
  • Quando il fuso orario è impostato e utcOffset non è impostato: un'ora civile in un giorno di calendario in un determinato fuso orario.
  • Se né timeZone né utcOffset è impostato: un'ora civile in un giorno di calendario nel fuso orario locale.

La data è relativa al Calendario gregoriano prolettico.

Se il valore di anno, mese o giorno è pari a 0, si considera che DateTime non abbia rispettivamente un anno, un mese o un giorno specifico.

Questo tipo può essere utilizzato anche per rappresentare un'ora fisica se sono impostati tutti i campi relativi a data e ora e viene impostato uno dei due casi del time_offset. Prendi in considerazione l'utilizzo del messaggio Timestamp per l'orario fisico. Se per il tuo caso d'uso vuoi memorizzare il fuso orario dell'utente, puoi farlo in un altro campo.

Questo tipo è più flessibile di quanto non sia richiesto da alcune applicazioni. Assicurati di documentare e convalidare i limiti della tua applicazione.

Rappresentazione 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.
}
Campi
year

integer

(Facoltativo) Anno della data. Deve essere compreso tra 1 e 9999 o 0 se si specifica una data/ora senza anno.

month

integer

(Facoltativo) Mese dell'anno. Il valore deve essere compreso tra 1 e 12 o 0 se viene specificata una data/ora senza mese.

day

integer

(Facoltativo) Giorno del mese. Deve essere compreso tra 1 e 31 e deve essere valido per l'anno e il mese oppure 0 se viene specificata una data/ora senza giorno.

hours

integer

(Facoltativo) Le ore del giorno nel formato 24 ore. Deve essere compreso tra 0 e 23, il valore predefinito è 0 (mezzanotte). Un'API può scegliere di consentire il valore "24:00:00" per scenari come l'orario di chiusura dell'attività.

minutes

integer

(Facoltativo) Minuti dell'ora del giorno. Deve essere compreso tra 0 e 59, il valore predefinito è 0.

seconds

integer

(Facoltativo) Secondi di minuti del tempo. Normalmente deve essere compreso tra 0 e 59, il valore predefinito è 0. Un'API potrebbe consentire il valore 60 se consente i secondi intercalari.

nanos

integer

(Facoltativo) Frazioni di secondi in nanosecondi. Deve essere compreso tra 0 e 999.999.999, il valore predefinito è 0.

Campo unione time_offset. (Facoltativo) Specifica la differenza UTC o il fuso orario di DateTime. Scegli attentamente tra di loro, tenendo presente che i dati relativi al fuso orario potrebbero cambiare in futuro (ad esempio, un paese modifica le date di inizio/fine dell'ora legale e che DateTimes future nell'intervallo interessato sono già state memorizzate). Se omesso, DateTime è considerata nel fuso orario locale. time_offset può essere solo uno dei seguenti:
utcOffset

string (Duration format)

Compensazione UTC. Deve essere un numero di secondi interi, compreso tra -18 e +18 ore. Ad esempio, una differenza UTC di -4:00 viene rappresentata come { seconds: -14400 }.

Durata in secondi con un massimo di nove cifre frazionarie e termina con "s". Esempio: "3.5s".

timeZone

object (TimeZone)

Fuso orario.

TimeZone

Rappresenta un fuso orario del database dei fusi orari IANA.

Rappresentazione JSON
{
  "id": string,
  "version": string
}
Campi
id

string

Fuso orario IANA Time Zone Database, ad esempio "America/New_York".

version

string

(Facoltativo) Numero di versione di IANA Time Zone Database, ad esempio "2019a".