datetime.rst 6.99 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
.. highlightlang:: c

.. _datetimeobjects:

DateTime Objects
----------------

Various date and time objects are supplied by the :mod:`datetime` module.
Before using any of these functions, the header file :file:`datetime.h` must be
included in your source (note that this is not included by :file:`Python.h`),
11
and the macro :c:macro:`PyDateTime_IMPORT` must be invoked, usually as part of
12
the module initialisation function.  The macro puts a pointer to a C structure
13
into a static variable, :c:data:`PyDateTimeAPI`, that is used by the following
14
macros.
15

16 17 18 19 20 21 22 23 24 25
Macro for access to the UTC singleton:

.. c:var:: PyObject* PyDateTime_TimeZone_UTC

   Returns the time zone singleton representing UTC, the same object as
   :attr:`datetime.timezone.utc`.

   .. versionadded:: 3.7


26 27
Type-check macros:

28
.. c:function:: int PyDate_Check(PyObject *ob)
29

30 31
   Return true if *ob* is of type :c:data:`PyDateTime_DateType` or a subtype of
   :c:data:`PyDateTime_DateType`.  *ob* must not be *NULL*.
32 33


34
.. c:function:: int PyDate_CheckExact(PyObject *ob)
35

36
   Return true if *ob* is of type :c:data:`PyDateTime_DateType`. *ob* must not be
37 38 39
   *NULL*.


40
.. c:function:: int PyDateTime_Check(PyObject *ob)
41

42 43
   Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType` or a subtype of
   :c:data:`PyDateTime_DateTimeType`.  *ob* must not be *NULL*.
44 45


46
.. c:function:: int PyDateTime_CheckExact(PyObject *ob)
47

48
   Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType`. *ob* must not
49 50 51
   be *NULL*.


52
.. c:function:: int PyTime_Check(PyObject *ob)
53

54 55
   Return true if *ob* is of type :c:data:`PyDateTime_TimeType` or a subtype of
   :c:data:`PyDateTime_TimeType`.  *ob* must not be *NULL*.
56 57


58
.. c:function:: int PyTime_CheckExact(PyObject *ob)
59

60
   Return true if *ob* is of type :c:data:`PyDateTime_TimeType`. *ob* must not be
61 62 63
   *NULL*.


64
.. c:function:: int PyDelta_Check(PyObject *ob)
65

66 67
   Return true if *ob* is of type :c:data:`PyDateTime_DeltaType` or a subtype of
   :c:data:`PyDateTime_DeltaType`.  *ob* must not be *NULL*.
68 69


70
.. c:function:: int PyDelta_CheckExact(PyObject *ob)
71

72
   Return true if *ob* is of type :c:data:`PyDateTime_DeltaType`. *ob* must not be
73 74 75
   *NULL*.


76
.. c:function:: int PyTZInfo_Check(PyObject *ob)
77

78 79
   Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType` or a subtype of
   :c:data:`PyDateTime_TZInfoType`.  *ob* must not be *NULL*.
80 81


82
.. c:function:: int PyTZInfo_CheckExact(PyObject *ob)
83

84
   Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType`. *ob* must not be
85 86 87 88 89
   *NULL*.


Macros to create objects:

90
.. c:function:: PyObject* PyDate_FromDate(int year, int month, int day)
91

92
   Return a :class:`datetime.date` object with the specified year, month and day.
93 94


95
.. c:function:: PyObject* PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)
96

97
   Return a :class:`datetime.datetime` object with the specified year, month, day, hour,
98 99 100
   minute, second and microsecond.


101
.. c:function:: PyObject* PyTime_FromTime(int hour, int minute, int second, int usecond)
102

103
   Return a :class:`datetime.time` object with the specified hour, minute, second and
104 105 106
   microsecond.


107
.. c:function:: PyObject* PyDelta_FromDSU(int days, int seconds, int useconds)
108

109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
   Return a :class:`datetime.timedelta` 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
   :class:`datetime.timedelta` objects.

.. c:function:: PyObject* PyTimeZone_FromOffset(PyDateTime_DeltaType* offset)

   Return a :class:`datetime.timezone` object with an unnamed fixed offset
   represented by the *offset* argument.

   .. versionadded:: 3.7

.. c:function:: PyObject* PyTimeZone_FromOffsetAndName(PyDateTime_DeltaType* offset, PyUnicode* name)

   Return a :class:`datetime.timezone` object with a fixed offset represented
   by the *offset* argument and with tzname *name*.

   .. versionadded:: 3.7
127 128 129


Macros to extract fields from date objects.  The argument must be an instance of
130 131
:c:data:`PyDateTime_Date`, including subclasses (such as
:c:data:`PyDateTime_DateTime`).  The argument must not be *NULL*, and the type is
132 133
not checked:

134
.. c:function:: int PyDateTime_GET_YEAR(PyDateTime_Date *o)
135 136 137 138

   Return the year, as a positive int.


139
.. c:function:: int PyDateTime_GET_MONTH(PyDateTime_Date *o)
140 141 142 143

   Return the month, as an int from 1 through 12.


144
.. c:function:: int PyDateTime_GET_DAY(PyDateTime_Date *o)
145 146 147 148 149

   Return the day, as an int from 1 through 31.


Macros to extract fields from datetime objects.  The argument must be an
150
instance of :c:data:`PyDateTime_DateTime`, including subclasses. The argument
151 152
must not be *NULL*, and the type is not checked:

153
.. c:function:: int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)
154 155 156 157

   Return the hour, as an int from 0 through 23.


158
.. c:function:: int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)
159 160 161 162

   Return the minute, as an int from 0 through 59.


163
.. c:function:: int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)
164 165 166 167

   Return the second, as an int from 0 through 59.


168
.. c:function:: int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)
169 170 171 172 173

   Return the microsecond, as an int from 0 through 999999.


Macros to extract fields from time objects.  The argument must be an instance of
174
:c:data:`PyDateTime_Time`, including subclasses. The argument must not be *NULL*,
175 176
and the type is not checked:

177
.. c:function:: int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)
178 179 180 181

   Return the hour, as an int from 0 through 23.


182
.. c:function:: int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)
183 184 185 186

   Return the minute, as an int from 0 through 59.


187
.. c:function:: int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)
188 189 190 191

   Return the second, as an int from 0 through 59.


192
.. c:function:: int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)
193 194 195 196

   Return the microsecond, as an int from 0 through 999999.


197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
Macros to extract fields from time delta objects.  The argument must be an
instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument must
not be *NULL*, and the type is not checked:

.. c:function:: int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)

   Return the number of days, as an int from -999999999 to 999999999.

   .. versionadded:: 3.3


.. c:function:: int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)

   Return the number of seconds, as an int from 0 through 86399.

   .. versionadded:: 3.3


215
.. c:function:: int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)
216 217 218 219 220 221

   Return the number of microseconds, as an int from 0 through 999999.

   .. versionadded:: 3.3


222 223
Macros for the convenience of modules implementing the DB API:

224
.. c:function:: PyObject* PyDateTime_FromTimestamp(PyObject *args)
225

226 227
   Create and return a new :class:`datetime.datetime` object given an argument
   tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`.
228 229


230
.. c:function:: PyObject* PyDate_FromTimestamp(PyObject *args)
231

232 233
   Create and return a new :class:`datetime.date` object given an argument
   tuple suitable for passing to :meth:`datetime.date.fromtimestamp()`.