DateTime

表示民用时间(有时为实际时间)。

此类类型可通过以下多种方式之一表示民用时间:

  • 如果已设置 utcOffset,但未设置 timeZone:某个日历日的民用时间,采用相对于世界协调时间 (UTC) 的特定偏移量。
  • 已设置 timeZone 且未设置 utcOffset 时:采用特定时区日历日的民用时间。
  • 如果未设置 timeZone 和 utcOffset,系统将返回当地时间中的民用时间(当地时间)。

该日期是相对于公历的。

如果年、月或日为 0,则视为该日期时间不具有特定的年、月或日。

如果设置了所有日期和时间字段,并且设置了 time_offset 其中任一情况,则此类型还可用于表示实际时间。建议将 Timestamp 消息改为实际时间。如果您的用例也希望存储用户的时区,您可以在另一个字段中进行存储。

此类型比某些应用更灵活。请务必记录并验证应用的限制。

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.
}
字段
year

integer

(可选)某年。必须为 1 到 9999。如果指定的日期不含年份,则为 0。

month

integer

(可选)某月。必须为 1 到 12。如果指定没有月份的日期时间,则为 0。

day

integer

(可选)某日。必须是 1 到 31 并且对年份和月份有效;如果指定的日期没有日期,则为 0。

hours

integer

(可选)一天中的小时(采用 24 小时制)。应介于 0 到 23 之间,默认为 0(午夜)。对于业务结束时间等场景,API 可以选择允许“24:00:00”一值。

minutes

integer

(可选)一天中某小时的分钟数。必须介于 0 到 59 之间,默认值为 0。

seconds

integer

(可选)时间的秒数部分。通常介于 0 到 59 之间,默认为 0。如果 API 允许闰秒,则 API 可以允许 60 一值。

nanos

integer

(可选)秒数的小数部分(以纳秒为单位)。必须介于 0 到 999,999,999 之间,默认值为 0。

联合字段 time_offset。(可选)指定世界协调时间 (UTC) 偏移量或日期时间的时区。考虑到时区数据将来可能会发生变化(例如,某个国家/地区修改了其夏令时/结束日期,且受影响的范围内已经存储了未来日期时间),请谨慎选择二者。如果省略此参数,则将日期时间视为当地时间。time_offset 只能是下列其中一项:
utcOffset

string (Duration format)

UTC 时差。必须是整秒,介于 -18 小时到 +18 小时之间。例如,UTC 时差 -4:00 表示为 { 秒: -14400 }。

此时间以秒为单位,最多包含九个小数位,并以“s”结尾。示例:"3.5s"

timeZone

object (TimeZone)

时区。

TimeZone

表示 IANA 时区数据库中的时区。

JSON 表示法
{
  "id": string,
  "version": string
}
字段
id

string

IANA 时区数据库中的时区,例如“America/New_York”。

version

string

(可选)IANA 时区数据库版本号,例如“2019a”。