DateTime

Representa a hora civil (ou, ocasionalmente, a hora física).

Este tipo pode representar uma hora civil de uma das seguintes formas possíveis:

  • Quando utcOffset está definido e timeZone não está definido: uma hora civil num dia do calendário com uma determinada diferença para UTC.
  • Quando timeZone está definido e utcOffset não está definido: uma hora civil num dia do calendário num fuso horário específico.
  • Quando não é definido timeZone nem utcOffset: uma hora civil num dia do calendário na hora local.

A data é relativa ao calendário gregoriano proléptico.

Se o ano, o mês ou o dia for 0, considera-se que o DateTime não tem um ano, um mês ou um dia específico, respetivamente.

Este tipo também pode ser usado para representar uma hora física se todos os campos de data e hora estiverem definidos e qualquer um dos casos de time_offset estiver definido. Em alternativa, considere usar a mensagem timestamp para a hora física. Se o seu exemplo de utilização também quiser armazenar o fuso horário do utilizador, isso pode ser feito noutro campo.

Este tipo é mais flexível do que algumas aplicações podem querer. Certifique-se de que documenta e valida as limitações da sua aplicação.

Representação 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.
}
Campos
year

integer

Opcional. Ano da data. Tem de ser de 1 a 9999 ou 0 se especificar uma data/hora sem um ano.

month

integer

Opcional. Mês do ano. Tem de estar compreendido entre 1 e 12 ou ser 0 se especificar uma data/hora sem um mês.

day

integer

Opcional. Dia do mês. Tem de estar compreendido entre 1 e 31 e ser válido para o ano e o mês, ou 0 se especificar uma data/hora sem um dia.

hours

integer

Opcional. Horas do dia no formato de 24 horas. Deve estar entre 0 e 23, sendo a predefinição 0 (meia-noite). Uma API pode optar por permitir o valor "24:00:00" para cenários como a hora de encerramento da empresa.

minutes

integer

Opcional. Minutos da hora do dia. Tem de ser um valor entre 0 e 59. A predefinição é 0.

seconds

integer

Opcional. Segundos dos minutos da hora. Normalmente, tem de estar entre 0 e 59. A predefinição é 0. Uma API pode permitir o valor 60 se permitir segundos intercalares.

nanos

integer

Opcional. Frações de segundos em nanosegundos. Tem de estar entre 0 e 999 999 999. A predefinição é 0.

Campo de união time_offset. Opcional. Especifica a diferença horária entre UTC e o fuso horário do DateTime. Escolha cuidadosamente entre eles, tendo em conta que os dados de fuso horário podem mudar no futuro (por exemplo, um país modifica as datas de início/fim da hora de verão e as datas/horas futuras no intervalo afetado já tinham sido armazenadas). Se for omitido, o DateTime é considerado no fuso horário local. time_offset só pode ser uma das seguintes opções:
utcOffset

string (Duration format)

Diferença face ao UTC. Tem de ser segundos inteiros, entre -18 horas e +18 horas. Por exemplo, um desvio de UTC de -4:00 seria representado como { seconds: -14400 }.

Uma duração em segundos com até nove dígitos fracionários, que termina com "s". Exemplo: "3.5s".

timeZone

object (TimeZone)

fuso horário.

Fuso horário

Representa um fuso horário da base de dados de fusos horários da IANA.

Representação JSON
{
  "id": string,
  "version": string
}
Campos
id

string

Fuso horário da base de dados de fusos horários da IANA. Por exemplo, "America/New_York".

version

string

Opcional. Número da versão da base de dados de fusos horários da IANA. Por exemplo, "2019a".