blob: 78724619ea3c52267d36ac6d8740be4bb983bb89 [file] [log] [blame]
Georg Brandl54a3faa2008-01-20 09:30:57 +00001.. highlightlang:: c
2
3.. _datetimeobjects:
4
5DateTime Objects
6----------------
7
8Various date and time objects are supplied by the :mod:`datetime` module.
9Before using any of these functions, the header file :file:`datetime.h` must be
10included in your source (note that this is not included by :file:`Python.h`),
Georg Brandl60203b42010-10-06 10:11:56 +000011and the macro :c:macro:`PyDateTime_IMPORT` must be invoked, usually as part of
Alexander Belopolsky56303e02010-06-26 02:15:07 +000012the module initialisation function. The macro puts a pointer to a C structure
Georg Brandl60203b42010-10-06 10:11:56 +000013into a static variable, :c:data:`PyDateTimeAPI`, that is used by the following
Alexander Belopolsky1341f572010-06-26 18:57:02 +000014macros.
Georg Brandl54a3faa2008-01-20 09:30:57 +000015
Paul Ganssle04af5b12018-01-24 17:29:30 -050016Macro for access to the UTC singleton:
17
18.. c:var:: PyObject* PyDateTime_TimeZone_UTC
19
20 Returns the time zone singleton representing UTC, the same object as
21 :attr:`datetime.timezone.utc`.
22
23 .. versionadded:: 3.7
24
25
Georg Brandl54a3faa2008-01-20 09:30:57 +000026Type-check macros:
27
Georg Brandl60203b42010-10-06 10:11:56 +000028.. c:function:: int PyDate_Check(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000029
Georg Brandl60203b42010-10-06 10:11:56 +000030 Return true if *ob* is of type :c:data:`PyDateTime_DateType` or a subtype of
31 :c:data:`PyDateTime_DateType`. *ob* must not be *NULL*.
Georg Brandl54a3faa2008-01-20 09:30:57 +000032
33
Georg Brandl60203b42010-10-06 10:11:56 +000034.. c:function:: int PyDate_CheckExact(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000035
Georg Brandl60203b42010-10-06 10:11:56 +000036 Return true if *ob* is of type :c:data:`PyDateTime_DateType`. *ob* must not be
Georg Brandl54a3faa2008-01-20 09:30:57 +000037 *NULL*.
38
39
Georg Brandl60203b42010-10-06 10:11:56 +000040.. c:function:: int PyDateTime_Check(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000041
Georg Brandl60203b42010-10-06 10:11:56 +000042 Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType` or a subtype of
43 :c:data:`PyDateTime_DateTimeType`. *ob* must not be *NULL*.
Georg Brandl54a3faa2008-01-20 09:30:57 +000044
45
Georg Brandl60203b42010-10-06 10:11:56 +000046.. c:function:: int PyDateTime_CheckExact(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000047
Georg Brandl60203b42010-10-06 10:11:56 +000048 Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType`. *ob* must not
Georg Brandl54a3faa2008-01-20 09:30:57 +000049 be *NULL*.
50
51
Georg Brandl60203b42010-10-06 10:11:56 +000052.. c:function:: int PyTime_Check(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000053
Georg Brandl60203b42010-10-06 10:11:56 +000054 Return true if *ob* is of type :c:data:`PyDateTime_TimeType` or a subtype of
55 :c:data:`PyDateTime_TimeType`. *ob* must not be *NULL*.
Georg Brandl54a3faa2008-01-20 09:30:57 +000056
57
Georg Brandl60203b42010-10-06 10:11:56 +000058.. c:function:: int PyTime_CheckExact(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000059
Georg Brandl60203b42010-10-06 10:11:56 +000060 Return true if *ob* is of type :c:data:`PyDateTime_TimeType`. *ob* must not be
Georg Brandl54a3faa2008-01-20 09:30:57 +000061 *NULL*.
62
63
Georg Brandl60203b42010-10-06 10:11:56 +000064.. c:function:: int PyDelta_Check(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000065
Georg Brandl60203b42010-10-06 10:11:56 +000066 Return true if *ob* is of type :c:data:`PyDateTime_DeltaType` or a subtype of
67 :c:data:`PyDateTime_DeltaType`. *ob* must not be *NULL*.
Georg Brandl54a3faa2008-01-20 09:30:57 +000068
69
Georg Brandl60203b42010-10-06 10:11:56 +000070.. c:function:: int PyDelta_CheckExact(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000071
Georg Brandl60203b42010-10-06 10:11:56 +000072 Return true if *ob* is of type :c:data:`PyDateTime_DeltaType`. *ob* must not be
Georg Brandl54a3faa2008-01-20 09:30:57 +000073 *NULL*.
74
75
Georg Brandl60203b42010-10-06 10:11:56 +000076.. c:function:: int PyTZInfo_Check(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000077
Georg Brandl60203b42010-10-06 10:11:56 +000078 Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType` or a subtype of
79 :c:data:`PyDateTime_TZInfoType`. *ob* must not be *NULL*.
Georg Brandl54a3faa2008-01-20 09:30:57 +000080
81
Georg Brandl60203b42010-10-06 10:11:56 +000082.. c:function:: int PyTZInfo_CheckExact(PyObject *ob)
Georg Brandl54a3faa2008-01-20 09:30:57 +000083
Georg Brandl60203b42010-10-06 10:11:56 +000084 Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType`. *ob* must not be
Georg Brandl54a3faa2008-01-20 09:30:57 +000085 *NULL*.
86
87
88Macros to create objects:
89
Georg Brandl60203b42010-10-06 10:11:56 +000090.. c:function:: PyObject* PyDate_FromDate(int year, int month, int day)
Georg Brandl54a3faa2008-01-20 09:30:57 +000091
Paul Ganssle04af5b12018-01-24 17:29:30 -050092 Return a :class:`datetime.date` object with the specified year, month and day.
Georg Brandl54a3faa2008-01-20 09:30:57 +000093
94
Georg Brandl60203b42010-10-06 10:11:56 +000095.. c:function:: PyObject* PyDateTime_FromDateAndTime(int year, int month, int day, int hour, int minute, int second, int usecond)
Georg Brandl54a3faa2008-01-20 09:30:57 +000096
Paul Ganssle04af5b12018-01-24 17:29:30 -050097 Return a :class:`datetime.datetime` object with the specified year, month, day, hour,
Georg Brandl54a3faa2008-01-20 09:30:57 +000098 minute, second and microsecond.
99
100
Georg Brandl60203b42010-10-06 10:11:56 +0000101.. c:function:: PyObject* PyTime_FromTime(int hour, int minute, int second, int usecond)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000102
Paul Ganssle04af5b12018-01-24 17:29:30 -0500103 Return a :class:`datetime.time` object with the specified hour, minute, second and
Georg Brandl54a3faa2008-01-20 09:30:57 +0000104 microsecond.
105
106
Georg Brandl60203b42010-10-06 10:11:56 +0000107.. c:function:: PyObject* PyDelta_FromDSU(int days, int seconds, int useconds)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000108
Paul Ganssle04af5b12018-01-24 17:29:30 -0500109 Return a :class:`datetime.timedelta` object representing the given number
110 of days, seconds and microseconds. Normalization is performed so that the
111 resulting number of microseconds and seconds lie in the ranges documented for
112 :class:`datetime.timedelta` objects.
113
114.. c:function:: PyObject* PyTimeZone_FromOffset(PyDateTime_DeltaType* offset)
115
116 Return a :class:`datetime.timezone` object with an unnamed fixed offset
117 represented by the *offset* argument.
118
119 .. versionadded:: 3.7
120
121.. c:function:: PyObject* PyTimeZone_FromOffsetAndName(PyDateTime_DeltaType* offset, PyUnicode* name)
122
123 Return a :class:`datetime.timezone` object with a fixed offset represented
124 by the *offset* argument and with tzname *name*.
125
126 .. versionadded:: 3.7
Georg Brandl54a3faa2008-01-20 09:30:57 +0000127
128
129Macros to extract fields from date objects. The argument must be an instance of
Georg Brandl60203b42010-10-06 10:11:56 +0000130:c:data:`PyDateTime_Date`, including subclasses (such as
131:c:data:`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is
Georg Brandl54a3faa2008-01-20 09:30:57 +0000132not checked:
133
Georg Brandl60203b42010-10-06 10:11:56 +0000134.. c:function:: int PyDateTime_GET_YEAR(PyDateTime_Date *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000135
136 Return the year, as a positive int.
137
138
Georg Brandl60203b42010-10-06 10:11:56 +0000139.. c:function:: int PyDateTime_GET_MONTH(PyDateTime_Date *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000140
141 Return the month, as an int from 1 through 12.
142
143
Georg Brandl60203b42010-10-06 10:11:56 +0000144.. c:function:: int PyDateTime_GET_DAY(PyDateTime_Date *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000145
146 Return the day, as an int from 1 through 31.
147
148
149Macros to extract fields from datetime objects. The argument must be an
Georg Brandl60203b42010-10-06 10:11:56 +0000150instance of :c:data:`PyDateTime_DateTime`, including subclasses. The argument
Georg Brandl54a3faa2008-01-20 09:30:57 +0000151must not be *NULL*, and the type is not checked:
152
Georg Brandl60203b42010-10-06 10:11:56 +0000153.. c:function:: int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000154
155 Return the hour, as an int from 0 through 23.
156
157
Georg Brandl60203b42010-10-06 10:11:56 +0000158.. c:function:: int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000159
160 Return the minute, as an int from 0 through 59.
161
162
Georg Brandl60203b42010-10-06 10:11:56 +0000163.. c:function:: int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000164
165 Return the second, as an int from 0 through 59.
166
167
Georg Brandl60203b42010-10-06 10:11:56 +0000168.. c:function:: int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000169
170 Return the microsecond, as an int from 0 through 999999.
171
172
173Macros to extract fields from time objects. The argument must be an instance of
Georg Brandl60203b42010-10-06 10:11:56 +0000174:c:data:`PyDateTime_Time`, including subclasses. The argument must not be *NULL*,
Georg Brandl54a3faa2008-01-20 09:30:57 +0000175and the type is not checked:
176
Georg Brandl60203b42010-10-06 10:11:56 +0000177.. c:function:: int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000178
179 Return the hour, as an int from 0 through 23.
180
181
Georg Brandl60203b42010-10-06 10:11:56 +0000182.. c:function:: int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000183
184 Return the minute, as an int from 0 through 59.
185
186
Georg Brandl60203b42010-10-06 10:11:56 +0000187.. c:function:: int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000188
189 Return the second, as an int from 0 through 59.
190
191
Georg Brandl60203b42010-10-06 10:11:56 +0000192.. c:function:: int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000193
194 Return the microsecond, as an int from 0 through 999999.
195
196
Amaury Forgeot d'Arc5e8260b2012-01-17 21:31:50 +0100197Macros to extract fields from time delta objects. The argument must be an
198instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument must
199not be *NULL*, and the type is not checked:
200
201.. c:function:: int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)
202
203 Return the number of days, as an int from -999999999 to 999999999.
204
205 .. versionadded:: 3.3
206
207
208.. c:function:: int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)
209
210 Return the number of seconds, as an int from 0 through 86399.
211
212 .. versionadded:: 3.3
213
214
Phobosmir82cd3ce2017-11-04 13:39:45 +0300215.. c:function:: int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)
Amaury Forgeot d'Arc5e8260b2012-01-17 21:31:50 +0100216
217 Return the number of microseconds, as an int from 0 through 999999.
218
219 .. versionadded:: 3.3
220
221
Georg Brandl54a3faa2008-01-20 09:30:57 +0000222Macros for the convenience of modules implementing the DB API:
223
Georg Brandl60203b42010-10-06 10:11:56 +0000224.. c:function:: PyObject* PyDateTime_FromTimestamp(PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000225
Paul Ganssle04af5b12018-01-24 17:29:30 -0500226 Create and return a new :class:`datetime.datetime` object given an argument
227 tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000228
229
Georg Brandl60203b42010-10-06 10:11:56 +0000230.. c:function:: PyObject* PyDate_FromTimestamp(PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000231
Paul Ganssle04af5b12018-01-24 17:29:30 -0500232 Create and return a new :class:`datetime.date` object given an argument
233 tuple suitable for passing to :meth:`datetime.date.fromtimestamp()`.