Đối tượng ngày giờ

Các đối tượng ngày và giờ khác nhau được cung cấp bởi mô-đun datetime. Trước khi sử dụng bất kỳ chức năng nào trong số này, tệp tiêu đề datetime.h phải được đưa vào nguồn của bạn (lưu ý rằng Python.h không bao gồm tệp này) và macro PyDateTime_IMPORT phải được gọi, thường là một phần của chức năng khởi tạo mô-đun. Macro đặt con trỏ tới cấu trúc C vào một biến tĩnh, PyDateTimeAPI, được các macro sau sử dụng.

PyDateTime_IMPORT()

Nhập ngày giờ C API.

Khi thành công, hãy điền vào con trỏ PyDateTimeAPI. Nếu thất bại, hãy đặt PyDateTimeAPI thành NULL và đặt ngoại lệ. Người gọi phải kiểm tra xem có xảy ra lỗi qua PyErr_Occurred() hay không:

PyDateTime_IMPORT;
if (PyErr_Occurred()) { /* dọn dẹp */ }

Cảnh báo

Điều này không tương thích với trình thông dịch phụ.

type PyDateTime_CAPI

Cấu trúc chứa các trường cho datetime C API.

Các trường của cấu trúc này là riêng tư và có thể thay đổi.

Không sử dụng trực tiếp; thay vào đó thích API PyDateTime_* hơn.

PyDateTime_CAPI *PyDateTimeAPI

Đối tượng được phân bổ động chứa datetime C API.

Biến này chỉ khả dụng khi PyDateTime_IMPORT thành công.

type PyDateTime_Date

Kiểu con này của PyObject đại diện cho một đối tượng ngày Python.

type PyDateTime_DateTime

Kiểu con này của PyObject đại diện cho một đối tượng datetime của Python.

type PyDateTime_Time

Kiểu con này của PyObject đại diện cho một đối tượng thời gian Python.

type PyDateTime_Delta

Loại con này của PyObject thể hiện sự khác biệt giữa hai giá trị ngày giờ.

PyTypeObject PyDateTime_DateType

Phiên bản PyTypeObject này đại diện cho kiểu ngày Python; nó là đối tượng tương tự như datetime.date trong lớp Python.

PyTypeObject PyDateTime_DateTimeType

Phiên bản PyTypeObject này đại diện cho kiểu ngày giờ của Python; nó là đối tượng tương tự như datetime.datetime trong lớp Python.

PyTypeObject PyDateTime_TimeType

Phiên bản PyTypeObject này đại diện cho loại thời gian Python; nó là đối tượng tương tự như datetime.time trong lớp Python.

PyTypeObject PyDateTime_DeltaType

Phiên bản PyTypeObject này đại diện cho kiểu Python cho sự khác biệt giữa hai giá trị ngày giờ; nó là đối tượng tương tự như datetime.timedelta trong lớp Python.

PyTypeObject PyDateTime_TZInfoType

Phiên bản PyTypeObject này đại diện cho loại thông tin múi giờ Python; nó là đối tượng tương tự như datetime.tzinfo trong lớp Python.

Macro để truy cập vào singleton UTC:

PyObject *PyDateTime_TimeZone_UTC

Trả về đơn vị múi giờ đại diện cho UTC, cùng đối tượng với datetime.timezone.utc.

Added in version 3.7.

Macro kiểm tra loại:

int PyDate_Check(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_DateType hoặc một loại con của PyDateTime_DateType. ob không được là NULL. Chức năng này luôn thành công.

int PyDate_CheckExact(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_DateType. ob không được là NULL. Chức năng này luôn thành công.

int PyDateTime_Check(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_DateTimeType hoặc một loại con của PyDateTime_DateTimeType. ob không được là NULL. Chức năng này luôn thành công.

int PyDateTime_CheckExact(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_DateTimeType. ob không được là NULL. Chức năng này luôn thành công.

int PyTime_Check(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_TimeType hoặc một loại con của PyDateTime_TimeType. ob không được là NULL. Chức năng này luôn thành công.

int PyTime_CheckExact(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_TimeType. ob không được là NULL. Chức năng này luôn thành công.

int PyDelta_Check(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_DeltaType hoặc một loại con của PyDateTime_DeltaType. ob không được là NULL. Chức năng này luôn thành công.

int PyDelta_CheckExact(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_DeltaType. ob không được là NULL. Chức năng này luôn thành công.

int PyTZInfo_Check(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_TZInfoType hoặc một loại con của PyDateTime_TZInfoType. ob không được là NULL. Chức năng này luôn thành công.

int PyTZInfo_CheckExact(PyObject *ob)

Trả về true nếu ob thuộc loại PyDateTime_TZInfoType. ob không được là NULL. Chức năng này luôn thành công.

Macro để tạo đối tượng:

PyObject *PyDate_FromDate(int year, int month, int day)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.date với năm, tháng và ngày được chỉ định.

PyObject *PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.datetime với năm, tháng, ngày, giờ, phút, giây và micro giây được chỉ định.

PyObject *PyDateTime_FromDateAndTimeAndFold(int year, int month, int day, int hour, int minute, int second, int usecond, int fold)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.datetime với năm, tháng, ngày, giờ, phút, giây, micro giây và gấp được chỉ định.

Added in version 3.6.

PyObject *PyTime_FromTime(int hour, int minute, int second, int usecond)
Giá trị trả về: Tham chiếu mới.

Trả về đối tượng datetime.time với giờ, phút, giây và micro giây được chỉ định.

PyObject *PyTime_FromTimeAndFold(int hour, int minute, int second, int usecond, int fold)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.time với giờ, phút, giây, micro giây và gấp được chỉ định.

Added in version 3.6.

PyObject *PyDelta_FromDSU(int days, int seconds, int useconds)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.timedelta đại diện cho số ngày, giây và micro giây đã cho. Việc chuẩn hóa được thực hiện sao cho số micro giây và giây thu được nằm trong phạm vi được ghi lại cho các đối tượng datetime.timedelta.

PyObject *PyTimeZone_FromOffset(PyObject *offset)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.timezone với phần bù cố định không được đặt tên được biểu thị bằng đối số offset.

Added in version 3.7.

PyObject *PyTimeZone_FromOffsetAndName(PyObject *offset, PyObject *name)
Giá trị trả về: Tham chiếu mới.

Trả về một đối tượng datetime.timezone có độ lệch cố định được biểu thị bằng đối số offset và với tzname name.

Added in version 3.7.

Macro để trích xuất các trường từ các đối tượng ngày. Đối số phải là một phiên bản của PyDateTime_Date, bao gồm các lớp con (chẳng hạn như PyDateTime_DateTime). Đối số không được là NULL và loại không được chọn:

int PyDateTime_GET_YEAR(PyDateTime_Date *o)

Trả về năm dưới dạng int dương.

int PyDateTime_GET_MONTH(PyDateTime_Date *o)

Trả về tháng dưới dạng int từ 1 đến 12.

int PyDateTime_GET_DAY(PyDateTime_Date *o)

Trả về ngày dưới dạng int từ 1 đến 31.

Macro để trích xuất các trường từ các đối tượng datetime. Đối số phải là một phiên bản của PyDateTime_DateTime, bao gồm các lớp con. Đối số không được là NULL và loại không được chọn:

int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)

Trả về giờ, dưới dạng int từ 0 đến 23.

int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)

Trả về phút, dưới dạng int từ 0 đến 59.

int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)

Trả về số thứ hai, dưới dạng int từ 0 đến 59.

int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)

Trả về micro giây, dưới dạng int từ 0 đến 999999.

int PyDateTime_DATE_GET_FOLD(PyDateTime_DateTime *o)

Trả về giá trị gấp, dưới dạng int từ 0 đến 1.

Added in version 3.6.

PyObject *PyDateTime_DATE_GET_TZINFO(PyDateTime_DateTime *o)

Trả lại tzinfo (có thể là None).

Added in version 3.10.

Macro để trích xuất các trường từ các đối tượng thời gian. Đối số phải là một phiên bản của PyDateTime_Time, bao gồm các lớp con. Đối số không được là NULL và loại không được chọn:

int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)

Trả về giờ, dưới dạng int từ 0 đến 23.

int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)

Trả về phút, dưới dạng int từ 0 đến 59.

int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)

Trả về số thứ hai, dưới dạng int từ 0 đến 59.

int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)

Trả về micro giây, dưới dạng int từ 0 đến 999999.

int PyDateTime_TIME_GET_FOLD(PyDateTime_Time *o)

Trả về giá trị gấp, dưới dạng int từ 0 đến 1.

Added in version 3.6.

PyObject *PyDateTime_TIME_GET_TZINFO(PyDateTime_Time *o)

Trả lại tzinfo (có thể là None).

Added in version 3.10.

Macro để trích xuất các trường từ các đối tượng delta thời gian. Đối số phải là một phiên bản của PyDateTime_Delta, bao gồm các lớp con. Đối số không được là NULL và loại không được chọn:

int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)

Trả về số ngày, dưới dạng int từ -999999999 đến 999999999.

Added in version 3.3.

int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)

Trả về số giây, dưới dạng int từ 0 đến 86399.

Added in version 3.3.

int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)

Trả về số micro giây, dưới dạng int từ 0 đến 999999.

Added in version 3.3.

Macro để thuận tiện cho các mô-đun triển khai DB API:

PyObject *PyDateTime_FromTimestamp(PyObject *args)
Giá trị trả về: Tham chiếu mới.

Tạo và trả về một đối tượng datetime.datetime mới với một bộ đối số phù hợp để truyền tới datetime.datetime.fromtimestamp().

PyObject *PyDate_FromTimestamp(PyObject *args)
Giá trị trả về: Tham chiếu mới.

Tạo và trả về một đối tượng datetime.date mới với một bộ đối số phù hợp để truyền tới datetime.date.fromtimestamp().

Dữ liệu nội bộ

Các ký hiệu sau đây được C API hiển thị nhưng chỉ được coi là nội bộ.

PyDateTime_CAPSULE_NAME

Tên của viên nang ngày giờ để chuyển tới PyCapsule_Import().

Chỉ sử dụng nội bộ. Thay vào đó hãy sử dụng PyDateTime_IMPORT.