表示民用时间(有时为实际时间)。
此类类型可通过以下多种方式之一表示民用时间:
- 如果已设置 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 |
字段 | |
---|---|
year |
(可选)某年。必须为 1 到 9999。如果指定的日期不含年份,则为 0。 |
month |
(可选)某月。必须为 1 到 12。如果指定没有月份的日期时间,则为 0。 |
day |
(可选)某日。必须是 1 到 31 并且对年份和月份有效;如果指定的日期没有日期,则为 0。 |
hours |
(可选)一天中的小时(采用 24 小时制)。应介于 0 到 23 之间,默认为 0(午夜)。对于业务结束时间等场景,API 可以选择允许“24:00:00”一值。 |
minutes |
(可选)一天中某小时的分钟数。必须介于 0 到 59 之间,默认值为 0。 |
seconds |
(可选)时间的秒数部分。通常介于 0 到 59 之间,默认为 0。如果 API 允许闰秒,则 API 可以允许 60 一值。 |
nanos |
(可选)秒数的小数部分(以纳秒为单位)。必须介于 0 到 999,999,999 之间,默认值为 0。 |
联合字段 time_offset 。(可选)指定世界协调时间 (UTC) 偏移量或日期时间的时区。考虑到时区数据将来可能会发生变化(例如,某个国家/地区修改了其夏令时/结束日期,且受影响的范围内已经存储了未来日期时间),请谨慎选择二者。如果省略此参数,则将日期时间视为当地时间。time_offset 只能是下列其中一项: |
|
utcOffset |
UTC 时差。必须是整秒,介于 -18 小时到 +18 小时之间。例如,UTC 时差 -4:00 表示为 { 秒: -14400 }。 此时间以秒为单位,最多包含九个小数位,并以“ |
timeZone |
时区。 |
TimeZone
表示 IANA 时区数据库中的时区。
JSON 表示法 |
---|
{ "id": string, "version": string } |
字段 | |
---|---|
id |
IANA 时区数据库中的时区,例如“America/New_York”。 |
version |
(可选)IANA 时区数据库版本号,例如“2019a”。 |