DateTime

Biểu thị giờ dân sự (hoặc đôi khi là giờ thực tế).

Loại này có thể biểu thị thời gian dân sự theo một trong vài cách sau:

  • Khi bạn đặt utcOffset và không đặt múi giờ: giờ dân sự vào một ngày theo lịch có thời gian chênh lệch cụ thể so với giờ UTC.
  • Khi bạn đặt múi giờ và không đặt utcOffset: giờ dân sự vào một ngày theo lịch thuộc một múi giờ cụ thể.
  • Khi không đặt múi giờ và utcOffset: giờ dân sự trong một ngày theo lịch theo giờ địa phương.

Ngày này có liên quan đến Lịch Gregorian Proleptic.

Nếu năm, tháng hoặc ngày bằng 0, thì DateTime được coi là không có năm, tháng hoặc ngày cụ thể tương ứng.

Loại này cũng có thể dùng để biểu thị thời gian thực nếu bạn đặt tất cả các trường ngày và giờ, đồng thời đặt một trong hai trường hợp của một trong số time_offset. Thay vào đó, hãy cân nhắc sử dụng tin nhắn Timestamp cho thời gian thực. Nếu trường hợp sử dụng của bạn cũng muốn lưu trữ múi giờ của người dùng, thì bạn có thể thực hiện việc đó trong một trường khác.

Loại này linh hoạt hơn so với mong muốn của một số ứng dụng. Đừng quên ghi lại và xác thực các giới hạn của ứng dụng.

Biểu diễn dưới dạng 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.
}
Trường
year

integer

Không bắt buộc. Năm của ngày. Giá trị phải từ 1 đến 9999 hoặc bằng 0 nếu chỉ định ngày giờ không có năm.

month

integer

Không bắt buộc. Tháng trong năm. Giá trị phải từ 1 đến 12 hoặc bằng 0 nếu chỉ định ngày giờ mà không có tháng.

day

integer

Không bắt buộc. Ngày trong tháng. Giá trị phải từ 1 đến 31 và hợp lệ trong năm và tháng hoặc bằng 0 nếu chỉ định ngày giờ không có ngày.

hours

integer

Không bắt buộc. Giờ trong ngày ở định dạng 24 giờ. Nên từ 0 đến 23, mặc định là 0 (nửa đêm). Một API có thể chọn cho phép giá trị "24:00:00" cho các tình huống như thời gian đóng cửa doanh nghiệp.

minutes

integer

Không bắt buộc. Số phút trong ngày. Giá trị phải nằm trong khoảng từ 0 đến 59, giá trị mặc định là 0.

seconds

integer

Không bắt buộc. Số giây của thời gian. Giá trị mặc định thường là từ 0 đến 59, giá trị mặc định là 0. Một API có thể cho phép giá trị 60 nếu cho phép bật-giây.

nanos

integer

Không bắt buộc. Các phân số của giây tính bằng nano giây. Giá trị mặc định là từ 0 đến 999.999.999, giá trị mặc định là 0.

Trường kết hợp time_offset. Không bắt buộc. Chỉ định độ lệch UTC hoặc múi giờ của DateTime. Hãy chọn cẩn thận các lựa chọn, vì dữ liệu múi giờ có thể thay đổi trong tương lai (ví dụ: một quốc gia sửa đổi ngày bắt đầu/kết thúc DST và ngày giờ trong tương lai trong phạm vi bị ảnh hưởng đã được lưu trữ). Nếu bạn bỏ qua thuộc tính này, DateTime sẽ được coi là theo giờ địa phương. time_offset chỉ có thể là một trong những trạng thái sau đây:
utcOffset

string (Duration format)

Độ lệch UTC. Phải là số giây, từ -18 giờ đến +18 giờ. Ví dụ: chênh lệch UTC là -4:00 sẽ được biểu thị là { seconds: -14400 }.

Thời lượng tính bằng giây với tối đa 9 chữ số phân số, kết thúc bằng "s". Ví dụ: "3.5s".

timeZone

object (TimeZone)

Múi giờ.

TimeZone

Biểu thị một múi giờ từ Cơ sở dữ liệu múi giờ IANA.

Biểu diễn dưới dạng JSON
{
  "id": string,
  "version": string
}
Trường
id

string

Múi giờ của cơ sở dữ liệu múi giờ IANA, ví dụ: "Mỹ/New_ York".

version

string

Không bắt buộc. Số phiên bản của Cơ sở dữ liệu múi giờ IANA, ví dụ: "2019a".