DateTime

Indica il tempo civile (o occasionalmente il tempo fisico).

Questo tipo può indicare l'ora civile in uno dei seguenti modi:

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

La data è relativa al calendario gregoriano prolettico.

Se l'anno, il mese o il giorno sono pari a 0, si considera che per DateTime non siano associati rispettivamente un anno, un mese o un giorno specifici.

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

Questo tipo è più flessibile di quanto potrebbe essere richiesto da alcune applicazioni. Assicurati di documentare e convalidare le limitazioni 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

Campo facoltativo. Anno del giorno. Il valore deve essere compreso tra 1 e 9999 o 0 se specifichi una data/ora senza un anno.

month

integer

Campo facoltativo. Mese dell'anno. Il valore deve essere compreso tra 1 e 12 o 0 se specifichi una data/ora senza un mese.

day

integer

Campo facoltativo. Giorno del mese. Deve essere compreso tra 1 e 31 ed essere valido per l'anno e il mese oppure 0 se specifichi un orario senza un giorno.

hours

integer

Campo facoltativo. Ore del giorno nel formato 24 ore. Il valore 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

Campo facoltativo. Minuti di ora del giorno. Il valore deve essere compreso tra 0 e 59, il valore predefinito è 0.

seconds

integer

Campo facoltativo. Secondi di minuti. 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

Campo facoltativo. Frazioni di secondi in nanosecondi. Il valore deve essere compreso tra 0 e 999.999.999, il valore predefinito è 0.

Campo di unione time_offset. Campo facoltativo. Specifica o la differenza da UTC o il fuso orario di DateTime. Scegli attentamente l'uno da uno all'altro, dato che i dati relativi al fuso orario possono cambiare in futuro (ad esempio, se un paese modifica le date di inizio/fine dell'ora legale e i valori DateTime future dell'intervallo interessato sono già stati memorizzati). Se omesso, la data e l'ora sono considerate espresse nell'ora locale. time_offset può essere solo uno dei seguenti:
utcOffset

string (Duration format)

Differenza UTC. Deve essere di secondi interi, compresi tra -18 ore e +18 ore. Ad esempio, un offset UTC di -4:00 viene rappresentato come { seconds: -14400 }.

Una durata in secondi con un massimo di nove cifre frazionarie, che 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 del database del fuso orario IANA, ad esempio "America/New_York".

version

string

Campo facoltativo. Numero di versione del database IANA Time Zone Database, ad esempio "2019a".