索引
DateTime
表示民用时间(有时是实际时间)。
此类型可以通过以下方式之一表示民用时间:
- 已设置 utc_offset 且未设置 time_zone 时:日历日中的民用时间,与世界协调时间 (UTC) 存在特定时差。
- 已设置 time_zone 但未设置 utc_offset 时:特定时区中日历日的民用时间。
- time_zone 和 utc_offset 均未设置时:日历日的民用时间(当地时间)。
该日期与公历公历相关。
如果年、月或日为 0,则将 DateTime 视为没有分别指定的年份、月份或日期。
如果设置了所有日期和时间字段,并且设置了 time_offset
之一,此类型还可用于表示实际时间。建议您在实际时间改用 Timestamp
消息。如果您的用例还想要存储用户的时区,可以在另一个字段中完成这项操作。
这种类型比某些应用可能需要的更加灵活。请务必记录并验证应用的限制。
字段 | |
---|---|
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) 偏移量或日期时间的时区。考虑到时区数据将来可能会发生变化(例如,某个国家/地区修改了其 DST 开始/结束日期,而受影响范围内的未来日期时间已经存储),请谨慎选择。如果省略,则 DateTime 会被视为当地时间。time_offset 只能是下列其中一项: |
|
utc_offset |
UTC 时差。必须是介于 -18 小时到 +18 小时之间的整秒值。例如,UTC 偏移量 -4:00 将表示为 { seconds: -14400 }。 |
time_zone |
时区。 |
TimeOfDay
表示一天中的某个时间。日期和时区不重要,或在别处指定。API 可以选择允许闰秒。相关类型为 google.type.Date
和 google.protobuf.Timestamp
。
字段 | |
---|---|
hours |
一天中的小时(采用 24 小时制)。值应为 0 到 23。对于业务结束时间等场景,API 可以选择允许“24:00:00”一值。 |
minutes |
一天中某小时的分钟数。值必须是介于 0 和 59 之间的数字。 |
seconds |
时间的秒数部分。通常必须是介于 0 和 59 之间的数字。如果 API 允许闰秒,则 API 可以允许 60 一值。 |
nanos |
秒数的小数部分(以纳秒为单位)。值必须是介于 0 和 999999999 之间的数字。 |
TimeZone
表示 IANA 时区数据库中的时区。
字段 | |
---|---|
id |
IANA 时区数据库中的时区,例如“America/New_York”。 |
version |
可选。IANA 时区数据库版本号,例如“2019a”。 |