Spaces:
Running on Zero
Running on Zero
| # DateTime Objects {#datetimeobjects} | |
| Various date and time objects are supplied by the `datetime`{.interpreted-text role="mod"} module. Before using any of these functions, the header file `datetime.h`{.interpreted-text role="file"} must be included in your source (note that this is not included by `Python.h`{.interpreted-text role="file"}), and the macro `PyDateTime_IMPORT`{.interpreted-text role="c:macro"} must be invoked, usually as part of the module initialisation function. The macro puts a pointer to a C structure into a static variable, `PyDateTimeAPI`{.interpreted-text role="c:data"}, that is used by the following macros. | |
| > Import the datetime C API. | |
| > | |
| > On success, populate the `PyDateTimeAPI`{.interpreted-text role="c:var"} pointer. On failure, set `PyDateTimeAPI`{.interpreted-text role="c:var"} to `NULL` and set an exception. The caller must check if an error occurred via `PyErr_Occurred`{.interpreted-text role="c:func"}: | |
| > | |
| > ``` | |
| > PyDateTime_IMPORT; | |
| > if (PyErr_Occurred()) { /* cleanup */ } | |
| > ``` | |
| > | |
| > :::: warning | |
| > ::: title | |
| > Warning | |
| > ::: | |
| > | |
| > This is not compatible with subinterpreters. | |
| > :::: | |
| > | |
| > ::: versionchanged | |
| > 3.15 | |
| > | |
| > This macro is now thread safe. | |
| > ::: | |
| > Structure containing the fields for the datetime C API. | |
| > | |
| > The fields of this structure are private and subject to change. | |
| > | |
| > Do not use this directly; prefer `PyDateTime_*` APIs instead. | |
| > Dynamically allocated object containing the datetime C API. | |
| > | |
| > This variable is only available once `PyDateTime_IMPORT`{.interpreted-text role="c:macro"} succeeds. | |
| > | |
| > ::: versionchanged | |
| > 3.15 | |
| > | |
| > This variable should not be accessed directly as direct access is not thread-safe. Use `PyDateTime_IMPORT`{.interpreted-text role="c:func"} instead. | |
| > ::: | |
| > This subtype of `PyObject`{.interpreted-text role="c:type"} represents a Python date object. | |
| > This subtype of `PyObject`{.interpreted-text role="c:type"} represents a Python datetime object. | |
| > This subtype of `PyObject`{.interpreted-text role="c:type"} represents a Python time object. | |
| > This subtype of `PyObject`{.interpreted-text role="c:type"} represents the difference between two datetime values. | |
| > This instance of `PyTypeObject`{.interpreted-text role="c:type"} represents the Python date type; it is the same object as `datetime.date`{.interpreted-text role="class"} in the Python layer. | |
| > This instance of `PyTypeObject`{.interpreted-text role="c:type"} represents the Python datetime type; it is the same object as `datetime.datetime`{.interpreted-text role="class"} in the Python layer. | |
| > This instance of `PyTypeObject`{.interpreted-text role="c:type"} represents the Python time type; it is the same object as `datetime.time`{.interpreted-text role="class"} in the Python layer. | |
| > This instance of `PyTypeObject`{.interpreted-text role="c:type"} represents the Python type for the difference between two datetime values; it is the same object as `datetime.timedelta`{.interpreted-text role="class"} in the Python layer. | |
| > This instance of `PyTypeObject`{.interpreted-text role="c:type"} represents the Python time zone info type; it is the same object as `datetime.tzinfo`{.interpreted-text role="class"} in the Python layer. | |
| Macro for access to the UTC singleton: | |
| > Returns the time zone singleton representing UTC, the same object as `datetime.timezone.utc`{.interpreted-text role="attr"}. | |
| > | |
| > ::: versionadded | |
| > 3.7 | |
| > ::: | |
| Type-check macros: | |
| > Return true if *ob* is of type `PyDateTime_DateType`{.interpreted-text role="c:data"} or a subtype of `!PyDateTime_DateType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_DateType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_DateTimeType`{.interpreted-text role="c:data"} or a subtype of `!PyDateTime_DateTimeType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_DateTimeType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_TimeType`{.interpreted-text role="c:data"} or a subtype of `!PyDateTime_TimeType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_TimeType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_DeltaType`{.interpreted-text role="c:data"} or a subtype of `!PyDateTime_DeltaType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_DeltaType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_TZInfoType`{.interpreted-text role="c:data"} or a subtype of `!PyDateTime_TZInfoType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| > Return true if *ob* is of type `PyDateTime_TZInfoType`{.interpreted-text role="c:data"}. *ob* must not be `NULL`. This function always succeeds. | |
| Macros to create objects: | |
| > Return a `datetime.date`{.interpreted-text role="class"} object with the specified year, month and day. | |
| > Return a `datetime.datetime`{.interpreted-text role="class"} object with the specified year, month, day, hour, minute, second and microsecond. | |
| > Return a `datetime.datetime`{.interpreted-text role="class"} object with the specified year, month, day, hour, minute, second, microsecond and fold. | |
| > | |
| > ::: versionadded | |
| > 3.6 | |
| > ::: | |
| > Return a `datetime.time`{.interpreted-text role="class"} object with the specified hour, minute, second and microsecond. | |
| > Return a `datetime.time`{.interpreted-text role="class"} object with the specified hour, minute, second, microsecond and fold. | |
| > | |
| > ::: versionadded | |
| > 3.6 | |
| > ::: | |
| > Return a `datetime.timedelta`{.interpreted-text role="class"} object representing the given number of days, seconds and microseconds. Normalization is performed so that the resulting number of microseconds and seconds lie in the ranges documented for `datetime.timedelta`{.interpreted-text role="class"} objects. | |
| > Return a `datetime.timezone`{.interpreted-text role="class"} object with an unnamed fixed offset represented by the *offset* argument. | |
| > | |
| > ::: versionadded | |
| > 3.7 | |
| > ::: | |
| > Return a `datetime.timezone`{.interpreted-text role="class"} object with a fixed offset represented by the *offset* argument and with tzname *name*. | |
| > | |
| > ::: versionadded | |
| > 3.7 | |
| > ::: | |
| Macros to extract fields from date objects. The argument must be an instance of `PyDateTime_Date`{.interpreted-text role="c:type"}, including subclasses (such as `PyDateTime_DateTime`{.interpreted-text role="c:type"}). The argument must not be `NULL`, and the type is not checked: | |
| > Return the year, as a positive int. | |
| > Return the month, as an int from 1 through 12. | |
| > Return the day, as an int from 1 through 31. | |
| Macros to extract fields from datetime objects. The argument must be an instance of `PyDateTime_DateTime`{.interpreted-text role="c:type"}, including subclasses. The argument must not be `NULL`, and the type is not checked: | |
| > Return the hour, as an int from 0 through 23. | |
| > Return the minute, as an int from 0 through 59. | |
| > Return the second, as an int from 0 through 59. | |
| > Return the microsecond, as an int from 0 through 999999. | |
| > Return the fold, as an int from 0 through 1. | |
| > | |
| > ::: versionadded | |
| > 3.6 | |
| > ::: | |
| > Return the tzinfo (which may be `None`). | |
| > | |
| > ::: versionadded | |
| > 3.10 | |
| > ::: | |
| Macros to extract fields from time objects. The argument must be an instance of `PyDateTime_Time`{.interpreted-text role="c:type"}, including subclasses. The argument must not be `NULL`, and the type is not checked: | |
| > Return the hour, as an int from 0 through 23. | |
| > Return the minute, as an int from 0 through 59. | |
| > Return the second, as an int from 0 through 59. | |
| > Return the microsecond, as an int from 0 through 999999. | |
| > Return the fold, as an int from 0 through 1. | |
| > | |
| > ::: versionadded | |
| > 3.6 | |
| > ::: | |
| > Return the tzinfo (which may be `None`). | |
| > | |
| > ::: versionadded | |
| > 3.10 | |
| > ::: | |
| Macros to extract fields from time delta objects. The argument must be an instance of `PyDateTime_Delta`{.interpreted-text role="c:type"}, including subclasses. The argument must not be `NULL`, and the type is not checked: | |
| > Return the number of days, as an int from -999999999 to 999999999. | |
| > | |
| > ::: versionadded | |
| > 3.3 | |
| > ::: | |
| > Return the number of seconds, as an int from 0 through 86399. | |
| > | |
| > ::: versionadded | |
| > 3.3 | |
| > ::: | |
| > Return the number of microseconds, as an int from 0 through 999999. | |
| > | |
| > ::: versionadded | |
| > 3.3 | |
| > ::: | |
| Macros for the convenience of modules implementing the DB API: | |
| > Create and return a new `datetime.datetime`{.interpreted-text role="class"} object given an argument tuple suitable for passing to `datetime.datetime.fromtimestamp`{.interpreted-text role="meth"}. | |
| > Create and return a new `datetime.date`{.interpreted-text role="class"} object given an argument tuple suitable for passing to `datetime.date.fromtimestamp`{.interpreted-text role="meth"}. | |
| # Internal data | |
| The following symbols are exposed by the C API but should be considered internal-only. | |
| > Name of the datetime capsule to pass to `PyCapsule_Import`{.interpreted-text role="c:func"}. | |
| > | |
| > Internal usage only. Use `PyDateTime_IMPORT`{.interpreted-text role="c:macro"} instead. | |