blob: 44a04373d1968370826d808301337e39244f7d24 [file] [log] [blame]
Stéphane Wirtelcbb64842019-05-17 11:55:34 +02001.. highlight:: c
Georg Brandl54a3faa2008-01-20 09:30:57 +00002
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
Edison A5765ecf2019-05-07 08:00:21 -0700101.. c:function:: PyObject* PyDateTime_FromDateAndTimeAndFold(int year, int month, int day, int hour, int minute, int second, int usecond, int fold)
102
103 Return a :class:`datetime.datetime` object with the specified year, month, day, hour,
104 minute, second, microsecond and fold.
105
106 .. versionadded:: 3.6
107
108
Edison Ad28772a2019-05-13 00:23:38 -0700109.. c:function:: PyObject* PyTime_FromTime(int hour, int minute, int second, int usecond)
110
111 Return a :class:`datetime.time` object with the specified hour, minute, second and
112 microsecond.
113
114
Edison A5765ecf2019-05-07 08:00:21 -0700115.. c:function:: PyObject* PyTime_FromTimeAndFold(int hour, int minute, int second, int usecond, int fold)
116
117 Return a :class:`datetime.time` object with the specified hour, minute, second,
118 microsecond and fold.
119
120 .. versionadded:: 3.6
121
122
Georg Brandl60203b42010-10-06 10:11:56 +0000123.. c:function:: PyObject* PyDelta_FromDSU(int days, int seconds, int useconds)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000124
Paul Ganssle04af5b12018-01-24 17:29:30 -0500125 Return a :class:`datetime.timedelta` object representing the given number
126 of days, seconds and microseconds. Normalization is performed so that the
127 resulting number of microseconds and seconds lie in the ranges documented for
128 :class:`datetime.timedelta` objects.
129
130.. c:function:: PyObject* PyTimeZone_FromOffset(PyDateTime_DeltaType* offset)
131
132 Return a :class:`datetime.timezone` object with an unnamed fixed offset
133 represented by the *offset* argument.
134
135 .. versionadded:: 3.7
136
137.. c:function:: PyObject* PyTimeZone_FromOffsetAndName(PyDateTime_DeltaType* offset, PyUnicode* name)
138
139 Return a :class:`datetime.timezone` object with a fixed offset represented
140 by the *offset* argument and with tzname *name*.
141
142 .. versionadded:: 3.7
Georg Brandl54a3faa2008-01-20 09:30:57 +0000143
144
145Macros to extract fields from date objects. The argument must be an instance of
Georg Brandl60203b42010-10-06 10:11:56 +0000146:c:data:`PyDateTime_Date`, including subclasses (such as
147:c:data:`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is
Georg Brandl54a3faa2008-01-20 09:30:57 +0000148not checked:
149
Georg Brandl60203b42010-10-06 10:11:56 +0000150.. c:function:: int PyDateTime_GET_YEAR(PyDateTime_Date *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000151
152 Return the year, as a positive int.
153
154
Georg Brandl60203b42010-10-06 10:11:56 +0000155.. c:function:: int PyDateTime_GET_MONTH(PyDateTime_Date *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000156
157 Return the month, as an int from 1 through 12.
158
159
Georg Brandl60203b42010-10-06 10:11:56 +0000160.. c:function:: int PyDateTime_GET_DAY(PyDateTime_Date *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000161
162 Return the day, as an int from 1 through 31.
163
164
165Macros to extract fields from datetime objects. The argument must be an
Georg Brandl60203b42010-10-06 10:11:56 +0000166instance of :c:data:`PyDateTime_DateTime`, including subclasses. The argument
Georg Brandl54a3faa2008-01-20 09:30:57 +0000167must not be *NULL*, and the type is not checked:
168
Georg Brandl60203b42010-10-06 10:11:56 +0000169.. c:function:: int PyDateTime_DATE_GET_HOUR(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000170
171 Return the hour, as an int from 0 through 23.
172
173
Georg Brandl60203b42010-10-06 10:11:56 +0000174.. c:function:: int PyDateTime_DATE_GET_MINUTE(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000175
176 Return the minute, as an int from 0 through 59.
177
178
Georg Brandl60203b42010-10-06 10:11:56 +0000179.. c:function:: int PyDateTime_DATE_GET_SECOND(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000180
181 Return the second, as an int from 0 through 59.
182
183
Georg Brandl60203b42010-10-06 10:11:56 +0000184.. c:function:: int PyDateTime_DATE_GET_MICROSECOND(PyDateTime_DateTime *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000185
186 Return the microsecond, as an int from 0 through 999999.
187
188
189Macros to extract fields from time objects. The argument must be an instance of
Georg Brandl60203b42010-10-06 10:11:56 +0000190:c:data:`PyDateTime_Time`, including subclasses. The argument must not be *NULL*,
Georg Brandl54a3faa2008-01-20 09:30:57 +0000191and the type is not checked:
192
Georg Brandl60203b42010-10-06 10:11:56 +0000193.. c:function:: int PyDateTime_TIME_GET_HOUR(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000194
195 Return the hour, as an int from 0 through 23.
196
197
Georg Brandl60203b42010-10-06 10:11:56 +0000198.. c:function:: int PyDateTime_TIME_GET_MINUTE(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000199
200 Return the minute, as an int from 0 through 59.
201
202
Georg Brandl60203b42010-10-06 10:11:56 +0000203.. c:function:: int PyDateTime_TIME_GET_SECOND(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000204
205 Return the second, as an int from 0 through 59.
206
207
Georg Brandl60203b42010-10-06 10:11:56 +0000208.. c:function:: int PyDateTime_TIME_GET_MICROSECOND(PyDateTime_Time *o)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000209
210 Return the microsecond, as an int from 0 through 999999.
211
212
Amaury Forgeot d'Arc5e8260b2012-01-17 21:31:50 +0100213Macros to extract fields from time delta objects. The argument must be an
214instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument must
215not be *NULL*, and the type is not checked:
216
217.. c:function:: int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o)
218
219 Return the number of days, as an int from -999999999 to 999999999.
220
221 .. versionadded:: 3.3
222
223
224.. c:function:: int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o)
225
226 Return the number of seconds, as an int from 0 through 86399.
227
228 .. versionadded:: 3.3
229
230
Phobosmir82cd3ce2017-11-04 13:39:45 +0300231.. c:function:: int PyDateTime_DELTA_GET_MICROSECONDS(PyDateTime_Delta *o)
Amaury Forgeot d'Arc5e8260b2012-01-17 21:31:50 +0100232
233 Return the number of microseconds, as an int from 0 through 999999.
234
235 .. versionadded:: 3.3
236
237
Georg Brandl54a3faa2008-01-20 09:30:57 +0000238Macros for the convenience of modules implementing the DB API:
239
Georg Brandl60203b42010-10-06 10:11:56 +0000240.. c:function:: PyObject* PyDateTime_FromTimestamp(PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000241
Paul Ganssle04af5b12018-01-24 17:29:30 -0500242 Create and return a new :class:`datetime.datetime` object given an argument
243 tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`.
Georg Brandl54a3faa2008-01-20 09:30:57 +0000244
245
Georg Brandl60203b42010-10-06 10:11:56 +0000246.. c:function:: PyObject* PyDate_FromTimestamp(PyObject *args)
Georg Brandl54a3faa2008-01-20 09:30:57 +0000247
Paul Ganssle04af5b12018-01-24 17:29:30 -0500248 Create and return a new :class:`datetime.date` object given an argument
249 tuple suitable for passing to :meth:`datetime.date.fromtimestamp()`.