blob: 401a647783ec22cd9adf713099e6563d80406a18 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`datetime` --- Basic date and time types
2=============================================
3
4.. module:: datetime
5 :synopsis: Basic date and time types.
6.. moduleauthor:: Tim Peters <tim@zope.com>
7.. sectionauthor:: Tim Peters <tim@zope.com>
8.. sectionauthor:: A.M. Kuchling <amk@amk.ca>
9
Christian Heimes5b5e81c2007-12-31 16:14:33 +000010.. XXX what order should the types be discussed in?
Georg Brandl116aa622007-08-15 14:28:22 +000011
Georg Brandl116aa622007-08-15 14:28:22 +000012The :mod:`datetime` module supplies classes for manipulating dates and times in
13both simple and complex ways. While date and time arithmetic is supported, the
Senthil Kumarana6bac952011-07-04 11:28:30 -070014focus of the implementation is on efficient attribute extraction for output
Georg Brandl116aa622007-08-15 14:28:22 +000015formatting and manipulation. For related
16functionality, see also the :mod:`time` and :mod:`calendar` modules.
17
18There are two kinds of date and time objects: "naive" and "aware". This
19distinction refers to whether the object has any notion of time zone, daylight
20saving time, or other kind of algorithmic or political time adjustment. Whether
Ezio Melotti35ec7f72011-10-02 12:44:50 +030021a naive :class:`.datetime` object represents Coordinated Universal Time (UTC),
Georg Brandl116aa622007-08-15 14:28:22 +000022local time, or time in some other timezone is purely up to the program, just
23like it's up to the program whether a particular number represents metres,
Ezio Melotti35ec7f72011-10-02 12:44:50 +030024miles, or mass. Naive :class:`.datetime` objects are easy to understand and to
Georg Brandl116aa622007-08-15 14:28:22 +000025work with, at the cost of ignoring some aspects of reality.
26
Ezio Melotti35ec7f72011-10-02 12:44:50 +030027For applications requiring more, :class:`.datetime` and :class:`.time` objects
Senthil Kumaran023c6f72011-07-17 19:01:14 +080028have an optional time zone information attribute, :attr:`tzinfo`, that can be
29set to an instance of a subclass of the abstract :class:`tzinfo` class. These
Georg Brandl116aa622007-08-15 14:28:22 +000030:class:`tzinfo` objects capture information about the offset from UTC time, the
Alexander Belopolsky4e749a12010-06-14 14:15:50 +000031time zone name, and whether Daylight Saving Time is in effect. Note that only
32one concrete :class:`tzinfo` class, the :class:`timezone` class, is supplied by the
Georg Brandl75546062011-09-17 20:20:04 +020033:mod:`datetime` module. The :class:`timezone` class can represent simple
Alexander Belopolsky4e749a12010-06-14 14:15:50 +000034timezones with fixed offset from UTC such as UTC itself or North American EST and
35EDT timezones. Supporting timezones at whatever level of detail is
36required is up to the application. The rules for time adjustment across the
37world are more political than rational, change frequently, and there is no
38standard suitable for every application aside from UTC.
Georg Brandl116aa622007-08-15 14:28:22 +000039
40The :mod:`datetime` module exports the following constants:
41
Georg Brandl116aa622007-08-15 14:28:22 +000042.. data:: MINYEAR
43
Ezio Melotti35ec7f72011-10-02 12:44:50 +030044 The smallest year number allowed in a :class:`date` or :class:`.datetime` object.
Georg Brandl116aa622007-08-15 14:28:22 +000045 :const:`MINYEAR` is ``1``.
46
47
48.. data:: MAXYEAR
49
Ezio Melotti35ec7f72011-10-02 12:44:50 +030050 The largest year number allowed in a :class:`date` or :class:`.datetime` object.
Georg Brandl116aa622007-08-15 14:28:22 +000051 :const:`MAXYEAR` is ``9999``.
52
53
54.. seealso::
55
56 Module :mod:`calendar`
57 General calendar related functions.
58
59 Module :mod:`time`
60 Time access and conversions.
61
62
63Available Types
64---------------
65
Georg Brandl116aa622007-08-15 14:28:22 +000066.. class:: date
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +000067 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +000068
69 An idealized naive date, assuming the current Gregorian calendar always was, and
70 always will be, in effect. Attributes: :attr:`year`, :attr:`month`, and
71 :attr:`day`.
72
73
74.. class:: time
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +000075 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +000076
77 An idealized time, independent of any particular day, assuming that every day
78 has exactly 24\*60\*60 seconds (there is no notion of "leap seconds" here).
79 Attributes: :attr:`hour`, :attr:`minute`, :attr:`second`, :attr:`microsecond`,
80 and :attr:`tzinfo`.
81
82
83.. class:: datetime
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +000084 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +000085
86 A combination of a date and a time. Attributes: :attr:`year`, :attr:`month`,
87 :attr:`day`, :attr:`hour`, :attr:`minute`, :attr:`second`, :attr:`microsecond`,
88 and :attr:`tzinfo`.
89
90
91.. class:: timedelta
Benjamin Peterson4ac9ce42009-10-04 14:49:41 +000092 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +000093
Ezio Melotti35ec7f72011-10-02 12:44:50 +030094 A duration expressing the difference between two :class:`date`, :class:`.time`,
95 or :class:`.datetime` instances to microsecond resolution.
Georg Brandl116aa622007-08-15 14:28:22 +000096
97
98.. class:: tzinfo
99
100 An abstract base class for time zone information objects. These are used by the
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300101 :class:`.datetime` and :class:`.time` classes to provide a customizable notion of
Georg Brandl116aa622007-08-15 14:28:22 +0000102 time adjustment (for example, to account for time zone and/or daylight saving
103 time).
104
Alexander Belopolsky4e749a12010-06-14 14:15:50 +0000105.. class:: timezone
106
107 A class that implements the :class:`tzinfo` abstract base class as a
108 fixed offset from the UTC.
109
110 .. versionadded:: 3.2
111
112
Georg Brandl116aa622007-08-15 14:28:22 +0000113Objects of these types are immutable.
114
115Objects of the :class:`date` type are always naive.
116
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300117An object *d* of type :class:`.time` or :class:`.datetime` may be naive or aware.
Georg Brandl116aa622007-08-15 14:28:22 +0000118*d* is aware if ``d.tzinfo`` is not ``None`` and ``d.tzinfo.utcoffset(d)`` does
119not return ``None``. If ``d.tzinfo`` is ``None``, or if ``d.tzinfo`` is not
120``None`` but ``d.tzinfo.utcoffset(d)`` returns ``None``, *d* is naive.
121
122The distinction between naive and aware doesn't apply to :class:`timedelta`
123objects.
124
125Subclass relationships::
126
127 object
128 timedelta
129 tzinfo
Alexander Belopolsky4e749a12010-06-14 14:15:50 +0000130 timezone
Georg Brandl116aa622007-08-15 14:28:22 +0000131 time
132 date
133 datetime
134
135
136.. _datetime-timedelta:
137
138:class:`timedelta` Objects
139--------------------------
140
141A :class:`timedelta` object represents a duration, the difference between two
142dates or times.
143
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000144.. class:: timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000145
Georg Brandl5c106642007-11-29 17:41:05 +0000146 All arguments are optional and default to ``0``. Arguments may be integers
Georg Brandl116aa622007-08-15 14:28:22 +0000147 or floats, and may be positive or negative.
148
149 Only *days*, *seconds* and *microseconds* are stored internally. Arguments are
150 converted to those units:
151
152 * A millisecond is converted to 1000 microseconds.
153 * A minute is converted to 60 seconds.
154 * An hour is converted to 3600 seconds.
155 * A week is converted to 7 days.
156
157 and days, seconds and microseconds are then normalized so that the
158 representation is unique, with
159
160 * ``0 <= microseconds < 1000000``
161 * ``0 <= seconds < 3600*24`` (the number of seconds in one day)
162 * ``-999999999 <= days <= 999999999``
163
164 If any argument is a float and there are fractional microseconds, the fractional
165 microseconds left over from all arguments are combined and their sum is rounded
166 to the nearest microsecond. If no argument is a float, the conversion and
167 normalization processes are exact (no information is lost).
168
169 If the normalized value of days lies outside the indicated range,
170 :exc:`OverflowError` is raised.
171
172 Note that normalization of negative values may be surprising at first. For
Christian Heimesfe337bf2008-03-23 21:54:12 +0000173 example,
Georg Brandl116aa622007-08-15 14:28:22 +0000174
Christian Heimes895627f2007-12-08 17:28:33 +0000175 >>> from datetime import timedelta
Georg Brandl116aa622007-08-15 14:28:22 +0000176 >>> d = timedelta(microseconds=-1)
177 >>> (d.days, d.seconds, d.microseconds)
178 (-1, 86399, 999999)
179
Georg Brandl116aa622007-08-15 14:28:22 +0000180
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000181Class attributes are:
Georg Brandl116aa622007-08-15 14:28:22 +0000182
183.. attribute:: timedelta.min
184
185 The most negative :class:`timedelta` object, ``timedelta(-999999999)``.
186
187
188.. attribute:: timedelta.max
189
190 The most positive :class:`timedelta` object, ``timedelta(days=999999999,
191 hours=23, minutes=59, seconds=59, microseconds=999999)``.
192
193
194.. attribute:: timedelta.resolution
195
196 The smallest possible difference between non-equal :class:`timedelta` objects,
197 ``timedelta(microseconds=1)``.
198
199Note that, because of normalization, ``timedelta.max`` > ``-timedelta.min``.
200``-timedelta.max`` is not representable as a :class:`timedelta` object.
201
202Instance attributes (read-only):
203
204+------------------+--------------------------------------------+
205| Attribute | Value |
206+==================+============================================+
207| ``days`` | Between -999999999 and 999999999 inclusive |
208+------------------+--------------------------------------------+
209| ``seconds`` | Between 0 and 86399 inclusive |
210+------------------+--------------------------------------------+
211| ``microseconds`` | Between 0 and 999999 inclusive |
212+------------------+--------------------------------------------+
213
214Supported operations:
215
Christian Heimes5b5e81c2007-12-31 16:14:33 +0000216.. XXX this table is too wide!
Georg Brandl116aa622007-08-15 14:28:22 +0000217
218+--------------------------------+-----------------------------------------------+
219| Operation | Result |
220+================================+===============================================+
221| ``t1 = t2 + t3`` | Sum of *t2* and *t3*. Afterwards *t1*-*t2* == |
222| | *t3* and *t1*-*t3* == *t2* are true. (1) |
223+--------------------------------+-----------------------------------------------+
224| ``t1 = t2 - t3`` | Difference of *t2* and *t3*. Afterwards *t1* |
225| | == *t2* - *t3* and *t2* == *t1* + *t3* are |
226| | true. (1) |
227+--------------------------------+-----------------------------------------------+
Georg Brandl5c106642007-11-29 17:41:05 +0000228| ``t1 = t2 * i or t1 = i * t2`` | Delta multiplied by an integer. |
Georg Brandl116aa622007-08-15 14:28:22 +0000229| | Afterwards *t1* // i == *t2* is true, |
230| | provided ``i != 0``. |
231+--------------------------------+-----------------------------------------------+
232| | In general, *t1* \* i == *t1* \* (i-1) + *t1* |
233| | is true. (1) |
234+--------------------------------+-----------------------------------------------+
Alexander Belopolsky1790bc42010-05-31 17:33:47 +0000235| ``t1 = t2 * f or t1 = f * t2`` | Delta multiplied by a float. The result is |
236| | rounded to the nearest multiple of |
237| | timedelta.resolution using round-half-to-even.|
238+--------------------------------+-----------------------------------------------+
Mark Dickinson7c186e22010-04-20 22:32:49 +0000239| ``f = t2 / t3`` | Division (3) of *t2* by *t3*. Returns a |
240| | :class:`float` object. |
241+--------------------------------+-----------------------------------------------+
Alexander Belopolsky1790bc42010-05-31 17:33:47 +0000242| ``t1 = t2 / f or t1 = t2 / i`` | Delta divided by a float or an int. The result|
243| | is rounded to the nearest multiple of |
244| | timedelta.resolution using round-half-to-even.|
245+--------------------------------+-----------------------------------------------+
Mark Dickinson7c186e22010-04-20 22:32:49 +0000246| ``t1 = t2 // i`` or | The floor is computed and the remainder (if |
247| ``t1 = t2 // t3`` | any) is thrown away. In the second case, an |
Alexander Belopolsky1790bc42010-05-31 17:33:47 +0000248| | integer is returned. (3) |
Mark Dickinson7c186e22010-04-20 22:32:49 +0000249+--------------------------------+-----------------------------------------------+
250| ``t1 = t2 % t3`` | The remainder is computed as a |
251| | :class:`timedelta` object. (3) |
252+--------------------------------+-----------------------------------------------+
253| ``q, r = divmod(t1, t2)`` | Computes the quotient and the remainder: |
254| | ``q = t1 // t2`` (3) and ``r = t1 % t2``. |
255| | q is an integer and r is a :class:`timedelta` |
256| | object. |
Georg Brandl116aa622007-08-15 14:28:22 +0000257+--------------------------------+-----------------------------------------------+
258| ``+t1`` | Returns a :class:`timedelta` object with the |
259| | same value. (2) |
260+--------------------------------+-----------------------------------------------+
261| ``-t1`` | equivalent to :class:`timedelta`\ |
262| | (-*t1.days*, -*t1.seconds*, |
263| | -*t1.microseconds*), and to *t1*\* -1. (1)(4) |
264+--------------------------------+-----------------------------------------------+
Georg Brandl495f7b52009-10-27 15:28:25 +0000265| ``abs(t)`` | equivalent to +\ *t* when ``t.days >= 0``, and|
Georg Brandl116aa622007-08-15 14:28:22 +0000266| | to -*t* when ``t.days < 0``. (2) |
267+--------------------------------+-----------------------------------------------+
Georg Brandlf55c3152010-07-31 11:40:07 +0000268| ``str(t)`` | Returns a string in the form |
269| | ``[D day[s], ][H]H:MM:SS[.UUUUUU]``, where D |
270| | is negative for negative ``t``. (5) |
271+--------------------------------+-----------------------------------------------+
272| ``repr(t)`` | Returns a string in the form |
273| | ``datetime.timedelta(D[, S[, U]])``, where D |
274| | is negative for negative ``t``. (5) |
275+--------------------------------+-----------------------------------------------+
Georg Brandl116aa622007-08-15 14:28:22 +0000276
277Notes:
278
279(1)
280 This is exact, but may overflow.
281
282(2)
283 This is exact, and cannot overflow.
284
285(3)
286 Division by 0 raises :exc:`ZeroDivisionError`.
287
288(4)
289 -*timedelta.max* is not representable as a :class:`timedelta` object.
290
Georg Brandlf55c3152010-07-31 11:40:07 +0000291(5)
292 String representations of :class:`timedelta` objects are normalized
293 similarly to their internal representation. This leads to somewhat
294 unusual results for negative timedeltas. For example:
295
296 >>> timedelta(hours=-5)
297 datetime.timedelta(-1, 68400)
298 >>> print(_)
299 -1 day, 19:00:00
300
Georg Brandl116aa622007-08-15 14:28:22 +0000301In addition to the operations listed above :class:`timedelta` objects support
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300302certain additions and subtractions with :class:`date` and :class:`.datetime`
Georg Brandl116aa622007-08-15 14:28:22 +0000303objects (see below).
304
Georg Brandl67b21b72010-08-17 15:07:14 +0000305.. versionchanged:: 3.2
306 Floor division and true division of a :class:`timedelta` object by another
307 :class:`timedelta` object are now supported, as are remainder operations and
308 the :func:`divmod` function. True division and multiplication of a
309 :class:`timedelta` object by a :class:`float` object are now supported.
Mark Dickinson7c186e22010-04-20 22:32:49 +0000310
311
Georg Brandl116aa622007-08-15 14:28:22 +0000312Comparisons of :class:`timedelta` objects are supported with the
313:class:`timedelta` object representing the smaller duration considered to be the
314smaller timedelta. In order to stop mixed-type comparisons from falling back to
315the default comparison by object address, when a :class:`timedelta` object is
316compared to an object of a different type, :exc:`TypeError` is raised unless the
317comparison is ``==`` or ``!=``. The latter cases return :const:`False` or
318:const:`True`, respectively.
319
Guido van Rossum2cc30da2007-11-02 23:46:40 +0000320:class:`timedelta` objects are :term:`hashable` (usable as dictionary keys), support
Georg Brandl116aa622007-08-15 14:28:22 +0000321efficient pickling, and in Boolean contexts, a :class:`timedelta` object is
322considered to be true if and only if it isn't equal to ``timedelta(0)``.
323
Antoine Pitroube6859d2009-11-25 23:02:32 +0000324Instance methods:
325
326.. method:: timedelta.total_seconds()
327
328 Return the total number of seconds contained in the duration. Equivalent to
Mark Dickinson0381e3f2010-05-08 14:35:02 +0000329 ``td / timedelta(seconds=1)``.
330
331 Note that for very large time intervals (greater than 270 years on
332 most platforms) this method will lose microsecond accuracy.
Antoine Pitroube6859d2009-11-25 23:02:32 +0000333
334 .. versionadded:: 3.2
335
336
Christian Heimesfe337bf2008-03-23 21:54:12 +0000337Example usage:
Georg Brandl48310cd2009-01-03 21:18:54 +0000338
Christian Heimes895627f2007-12-08 17:28:33 +0000339 >>> from datetime import timedelta
340 >>> year = timedelta(days=365)
Georg Brandl48310cd2009-01-03 21:18:54 +0000341 >>> another_year = timedelta(weeks=40, days=84, hours=23,
Christian Heimes895627f2007-12-08 17:28:33 +0000342 ... minutes=50, seconds=600) # adds up to 365 days
Antoine Pitroube6859d2009-11-25 23:02:32 +0000343 >>> year.total_seconds()
344 31536000.0
Christian Heimes895627f2007-12-08 17:28:33 +0000345 >>> year == another_year
346 True
347 >>> ten_years = 10 * year
348 >>> ten_years, ten_years.days // 365
349 (datetime.timedelta(3650), 10)
350 >>> nine_years = ten_years - year
351 >>> nine_years, nine_years.days // 365
352 (datetime.timedelta(3285), 9)
353 >>> three_years = nine_years // 3;
354 >>> three_years, three_years.days // 365
355 (datetime.timedelta(1095), 3)
356 >>> abs(three_years - ten_years) == 2 * three_years + year
357 True
358
Georg Brandl116aa622007-08-15 14:28:22 +0000359
360.. _datetime-date:
361
362:class:`date` Objects
363---------------------
364
365A :class:`date` object represents a date (year, month and day) in an idealized
366calendar, the current Gregorian calendar indefinitely extended in both
367directions. January 1 of year 1 is called day number 1, January 2 of year 1 is
368called day number 2, and so on. This matches the definition of the "proleptic
369Gregorian" calendar in Dershowitz and Reingold's book Calendrical Calculations,
370where it's the base calendar for all computations. See the book for algorithms
371for converting between proleptic Gregorian ordinals and many other calendar
372systems.
373
374
375.. class:: date(year, month, day)
376
Georg Brandl5c106642007-11-29 17:41:05 +0000377 All arguments are required. Arguments may be integers, in the following
Georg Brandl116aa622007-08-15 14:28:22 +0000378 ranges:
379
380 * ``MINYEAR <= year <= MAXYEAR``
381 * ``1 <= month <= 12``
382 * ``1 <= day <= number of days in the given month and year``
383
384 If an argument outside those ranges is given, :exc:`ValueError` is raised.
385
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000386
Georg Brandl116aa622007-08-15 14:28:22 +0000387Other constructors, all class methods:
388
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000389.. classmethod:: date.today()
Georg Brandl116aa622007-08-15 14:28:22 +0000390
391 Return the current local date. This is equivalent to
392 ``date.fromtimestamp(time.time())``.
393
394
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000395.. classmethod:: date.fromtimestamp(timestamp)
Georg Brandl116aa622007-08-15 14:28:22 +0000396
397 Return the local date corresponding to the POSIX timestamp, such as is returned
Victor Stinner5d272cc2012-03-13 13:35:55 +0100398 by :func:`time.time`. This may raise :exc:`OverflowError`, if the timestamp is out
Victor Stinnerecc6e662012-03-14 00:39:29 +0100399 of the range of values supported by the platform C :c:func:`localtime` function,
400 and :exc:`OSError` on :c:func:`localtime` failure.
Georg Brandl116aa622007-08-15 14:28:22 +0000401 It's common for this to be restricted to years from 1970 through 2038. Note
402 that on non-POSIX systems that include leap seconds in their notion of a
403 timestamp, leap seconds are ignored by :meth:`fromtimestamp`.
404
Victor Stinner5d272cc2012-03-13 13:35:55 +0100405 .. versionchanged:: 3.3
406 Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
407 is out of the range of values supported by the platform C
Victor Stinner21f58932012-03-14 00:15:40 +0100408 :c:func:`localtime` function. Raise :exc:`OSError` instead of
409 :exc:`ValueError` on :c:func:`localtime` failure.
Victor Stinner5d272cc2012-03-13 13:35:55 +0100410
Georg Brandl116aa622007-08-15 14:28:22 +0000411
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000412.. classmethod:: date.fromordinal(ordinal)
Georg Brandl116aa622007-08-15 14:28:22 +0000413
414 Return the date corresponding to the proleptic Gregorian ordinal, where January
415 1 of year 1 has ordinal 1. :exc:`ValueError` is raised unless ``1 <= ordinal <=
416 date.max.toordinal()``. For any date *d*, ``date.fromordinal(d.toordinal()) ==
417 d``.
418
Georg Brandl116aa622007-08-15 14:28:22 +0000419
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000420Class attributes:
Georg Brandl116aa622007-08-15 14:28:22 +0000421
422.. attribute:: date.min
423
424 The earliest representable date, ``date(MINYEAR, 1, 1)``.
425
426
427.. attribute:: date.max
428
429 The latest representable date, ``date(MAXYEAR, 12, 31)``.
430
431
432.. attribute:: date.resolution
433
434 The smallest possible difference between non-equal date objects,
435 ``timedelta(days=1)``.
436
Georg Brandl116aa622007-08-15 14:28:22 +0000437
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000438Instance attributes (read-only):
Georg Brandl116aa622007-08-15 14:28:22 +0000439
440.. attribute:: date.year
441
442 Between :const:`MINYEAR` and :const:`MAXYEAR` inclusive.
443
444
445.. attribute:: date.month
446
447 Between 1 and 12 inclusive.
448
449
450.. attribute:: date.day
451
452 Between 1 and the number of days in the given month of the given year.
453
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000454
Georg Brandl116aa622007-08-15 14:28:22 +0000455Supported operations:
456
457+-------------------------------+----------------------------------------------+
458| Operation | Result |
459+===============================+==============================================+
460| ``date2 = date1 + timedelta`` | *date2* is ``timedelta.days`` days removed |
461| | from *date1*. (1) |
462+-------------------------------+----------------------------------------------+
463| ``date2 = date1 - timedelta`` | Computes *date2* such that ``date2 + |
464| | timedelta == date1``. (2) |
465+-------------------------------+----------------------------------------------+
466| ``timedelta = date1 - date2`` | \(3) |
467+-------------------------------+----------------------------------------------+
468| ``date1 < date2`` | *date1* is considered less than *date2* when |
469| | *date1* precedes *date2* in time. (4) |
470+-------------------------------+----------------------------------------------+
471
472Notes:
473
474(1)
475 *date2* is moved forward in time if ``timedelta.days > 0``, or backward if
476 ``timedelta.days < 0``. Afterward ``date2 - date1 == timedelta.days``.
477 ``timedelta.seconds`` and ``timedelta.microseconds`` are ignored.
478 :exc:`OverflowError` is raised if ``date2.year`` would be smaller than
479 :const:`MINYEAR` or larger than :const:`MAXYEAR`.
480
481(2)
482 This isn't quite equivalent to date1 + (-timedelta), because -timedelta in
483 isolation can overflow in cases where date1 - timedelta does not.
484 ``timedelta.seconds`` and ``timedelta.microseconds`` are ignored.
485
486(3)
487 This is exact, and cannot overflow. timedelta.seconds and
488 timedelta.microseconds are 0, and date2 + timedelta == date1 after.
489
490(4)
491 In other words, ``date1 < date2`` if and only if ``date1.toordinal() <
492 date2.toordinal()``. In order to stop comparison from falling back to the
493 default scheme of comparing object addresses, date comparison normally raises
494 :exc:`TypeError` if the other comparand isn't also a :class:`date` object.
495 However, ``NotImplemented`` is returned instead if the other comparand has a
496 :meth:`timetuple` attribute. This hook gives other kinds of date objects a
497 chance at implementing mixed-type comparison. If not, when a :class:`date`
498 object is compared to an object of a different type, :exc:`TypeError` is raised
499 unless the comparison is ``==`` or ``!=``. The latter cases return
500 :const:`False` or :const:`True`, respectively.
501
502Dates can be used as dictionary keys. In Boolean contexts, all :class:`date`
503objects are considered to be true.
504
505Instance methods:
506
Georg Brandl116aa622007-08-15 14:28:22 +0000507.. method:: date.replace(year, month, day)
508
Senthil Kumarana6bac952011-07-04 11:28:30 -0700509 Return a date with the same value, except for those parameters given new
510 values by whichever keyword arguments are specified. For example, if ``d ==
511 date(2002, 12, 31)``, then ``d.replace(day=26) == date(2002, 12, 26)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000512
513
514.. method:: date.timetuple()
515
516 Return a :class:`time.struct_time` such as returned by :func:`time.localtime`.
517 The hours, minutes and seconds are 0, and the DST flag is -1. ``d.timetuple()``
518 is equivalent to ``time.struct_time((d.year, d.month, d.day, 0, 0, 0,
Alexander Belopolsky64912482010-06-08 18:59:20 +0000519 d.weekday(), yday, -1))``, where ``yday = d.toordinal() - date(d.year, 1,
520 1).toordinal() + 1`` is the day number within the current year starting with
521 ``1`` for January 1st.
Georg Brandl116aa622007-08-15 14:28:22 +0000522
523
524.. method:: date.toordinal()
525
526 Return the proleptic Gregorian ordinal of the date, where January 1 of year 1
527 has ordinal 1. For any :class:`date` object *d*,
528 ``date.fromordinal(d.toordinal()) == d``.
529
530
531.. method:: date.weekday()
532
533 Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
534 For example, ``date(2002, 12, 4).weekday() == 2``, a Wednesday. See also
535 :meth:`isoweekday`.
536
537
538.. method:: date.isoweekday()
539
540 Return the day of the week as an integer, where Monday is 1 and Sunday is 7.
541 For example, ``date(2002, 12, 4).isoweekday() == 3``, a Wednesday. See also
542 :meth:`weekday`, :meth:`isocalendar`.
543
544
545.. method:: date.isocalendar()
546
547 Return a 3-tuple, (ISO year, ISO week number, ISO weekday).
548
549 The ISO calendar is a widely used variant of the Gregorian calendar. See
Mark Dickinsonf964ac22009-11-03 16:29:10 +0000550 http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm for a good
551 explanation.
Georg Brandl116aa622007-08-15 14:28:22 +0000552
553 The ISO year consists of 52 or 53 full weeks, and where a week starts on a
554 Monday and ends on a Sunday. The first week of an ISO year is the first
555 (Gregorian) calendar week of a year containing a Thursday. This is called week
556 number 1, and the ISO year of that Thursday is the same as its Gregorian year.
557
558 For example, 2004 begins on a Thursday, so the first week of ISO year 2004
559 begins on Monday, 29 Dec 2003 and ends on Sunday, 4 Jan 2004, so that
560 ``date(2003, 12, 29).isocalendar() == (2004, 1, 1)`` and ``date(2004, 1,
561 4).isocalendar() == (2004, 1, 7)``.
562
563
564.. method:: date.isoformat()
565
566 Return a string representing the date in ISO 8601 format, 'YYYY-MM-DD'. For
567 example, ``date(2002, 12, 4).isoformat() == '2002-12-04'``.
568
569
570.. method:: date.__str__()
571
572 For a date *d*, ``str(d)`` is equivalent to ``d.isoformat()``.
573
574
575.. method:: date.ctime()
576
577 Return a string representing the date, for example ``date(2002, 12,
578 4).ctime() == 'Wed Dec 4 00:00:00 2002'``. ``d.ctime()`` is equivalent to
579 ``time.ctime(time.mktime(d.timetuple()))`` on platforms where the native C
Georg Brandl60203b42010-10-06 10:11:56 +0000580 :c:func:`ctime` function (which :func:`time.ctime` invokes, but which
Georg Brandl116aa622007-08-15 14:28:22 +0000581 :meth:`date.ctime` does not invoke) conforms to the C standard.
582
583
584.. method:: date.strftime(format)
585
586 Return a string representing the date, controlled by an explicit format string.
587 Format codes referring to hours, minutes or seconds will see 0 values. See
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000588 section :ref:`strftime-strptime-behavior`.
589
Georg Brandl116aa622007-08-15 14:28:22 +0000590
Christian Heimes895627f2007-12-08 17:28:33 +0000591Example of counting days to an event::
592
593 >>> import time
594 >>> from datetime import date
595 >>> today = date.today()
596 >>> today
597 datetime.date(2007, 12, 5)
598 >>> today == date.fromtimestamp(time.time())
599 True
600 >>> my_birthday = date(today.year, 6, 24)
601 >>> if my_birthday < today:
Georg Brandl48310cd2009-01-03 21:18:54 +0000602 ... my_birthday = my_birthday.replace(year=today.year + 1)
Christian Heimes895627f2007-12-08 17:28:33 +0000603 >>> my_birthday
604 datetime.date(2008, 6, 24)
Georg Brandl48310cd2009-01-03 21:18:54 +0000605 >>> time_to_birthday = abs(my_birthday - today)
Christian Heimes895627f2007-12-08 17:28:33 +0000606 >>> time_to_birthday.days
607 202
608
Christian Heimesfe337bf2008-03-23 21:54:12 +0000609Example of working with :class:`date`:
610
611.. doctest::
Christian Heimes895627f2007-12-08 17:28:33 +0000612
613 >>> from datetime import date
614 >>> d = date.fromordinal(730920) # 730920th day after 1. 1. 0001
615 >>> d
616 datetime.date(2002, 3, 11)
617 >>> t = d.timetuple()
Christian Heimesfe337bf2008-03-23 21:54:12 +0000618 >>> for i in t: # doctest: +SKIP
Neal Norwitz752abd02008-05-13 04:55:24 +0000619 ... print(i)
Christian Heimes895627f2007-12-08 17:28:33 +0000620 2002 # year
621 3 # month
622 11 # day
623 0
624 0
625 0
626 0 # weekday (0 = Monday)
627 70 # 70th day in the year
628 -1
629 >>> ic = d.isocalendar()
Christian Heimesfe337bf2008-03-23 21:54:12 +0000630 >>> for i in ic: # doctest: +SKIP
Neal Norwitz752abd02008-05-13 04:55:24 +0000631 ... print(i)
Christian Heimes895627f2007-12-08 17:28:33 +0000632 2002 # ISO year
633 11 # ISO week number
634 1 # ISO day number ( 1 = Monday )
635 >>> d.isoformat()
636 '2002-03-11'
637 >>> d.strftime("%d/%m/%y")
638 '11/03/02'
639 >>> d.strftime("%A %d. %B %Y")
640 'Monday 11. March 2002'
641
Georg Brandl116aa622007-08-15 14:28:22 +0000642
643.. _datetime-datetime:
644
645:class:`datetime` Objects
646-------------------------
647
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300648A :class:`.datetime` object is a single object containing all the information
649from a :class:`date` object and a :class:`.time` object. Like a :class:`date`
650object, :class:`.datetime` assumes the current Gregorian calendar extended in
651both directions; like a time object, :class:`.datetime` assumes there are exactly
Georg Brandl116aa622007-08-15 14:28:22 +00006523600\*24 seconds in every day.
653
654Constructor:
655
Georg Brandlc2a4f4f2009-04-10 09:03:43 +0000656.. class:: datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000657
658 The year, month and day arguments are required. *tzinfo* may be ``None``, or an
Georg Brandl5c106642007-11-29 17:41:05 +0000659 instance of a :class:`tzinfo` subclass. The remaining arguments may be integers,
660 in the following ranges:
Georg Brandl116aa622007-08-15 14:28:22 +0000661
662 * ``MINYEAR <= year <= MAXYEAR``
663 * ``1 <= month <= 12``
664 * ``1 <= day <= number of days in the given month and year``
665 * ``0 <= hour < 24``
666 * ``0 <= minute < 60``
667 * ``0 <= second < 60``
668 * ``0 <= microsecond < 1000000``
669
670 If an argument outside those ranges is given, :exc:`ValueError` is raised.
671
672Other constructors, all class methods:
673
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000674.. classmethod:: datetime.today()
Georg Brandl116aa622007-08-15 14:28:22 +0000675
676 Return the current local datetime, with :attr:`tzinfo` ``None``. This is
677 equivalent to ``datetime.fromtimestamp(time.time())``. See also :meth:`now`,
678 :meth:`fromtimestamp`.
679
680
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000681.. classmethod:: datetime.now(tz=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000682
683 Return the current local date and time. If optional argument *tz* is ``None``
684 or not specified, this is like :meth:`today`, but, if possible, supplies more
685 precision than can be gotten from going through a :func:`time.time` timestamp
686 (for example, this may be possible on platforms supplying the C
Georg Brandl60203b42010-10-06 10:11:56 +0000687 :c:func:`gettimeofday` function).
Georg Brandl116aa622007-08-15 14:28:22 +0000688
689 Else *tz* must be an instance of a class :class:`tzinfo` subclass, and the
690 current date and time are converted to *tz*'s time zone. In this case the
691 result is equivalent to ``tz.fromutc(datetime.utcnow().replace(tzinfo=tz))``.
692 See also :meth:`today`, :meth:`utcnow`.
693
694
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000695.. classmethod:: datetime.utcnow()
Georg Brandl116aa622007-08-15 14:28:22 +0000696
697 Return the current UTC date and time, with :attr:`tzinfo` ``None``. This is like
698 :meth:`now`, but returns the current UTC date and time, as a naive
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300699 :class:`.datetime` object. An aware current UTC datetime can be obtained by
Alexander Belopolsky4e749a12010-06-14 14:15:50 +0000700 calling ``datetime.now(timezone.utc)``. See also :meth:`now`.
Georg Brandl116aa622007-08-15 14:28:22 +0000701
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000702.. classmethod:: datetime.fromtimestamp(timestamp, tz=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000703
704 Return the local date and time corresponding to the POSIX timestamp, such as is
705 returned by :func:`time.time`. If optional argument *tz* is ``None`` or not
706 specified, the timestamp is converted to the platform's local date and time, and
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300707 the returned :class:`.datetime` object is naive.
Georg Brandl116aa622007-08-15 14:28:22 +0000708
709 Else *tz* must be an instance of a class :class:`tzinfo` subclass, and the
710 timestamp is converted to *tz*'s time zone. In this case the result is
711 equivalent to
712 ``tz.fromutc(datetime.utcfromtimestamp(timestamp).replace(tzinfo=tz))``.
713
Victor Stinnerecc6e662012-03-14 00:39:29 +0100714 :meth:`fromtimestamp` may raise :exc:`OverflowError`, if the timestamp is out of
Georg Brandl60203b42010-10-06 10:11:56 +0000715 the range of values supported by the platform C :c:func:`localtime` or
Victor Stinnerecc6e662012-03-14 00:39:29 +0100716 :c:func:`gmtime` functions, and :exc:`OSError` on :c:func:`localtime` or
717 :c:func:`gmtime` failure.
718 It's common for this to be restricted to years in
Georg Brandl116aa622007-08-15 14:28:22 +0000719 1970 through 2038. Note that on non-POSIX systems that include leap seconds in
720 their notion of a timestamp, leap seconds are ignored by :meth:`fromtimestamp`,
721 and then it's possible to have two timestamps differing by a second that yield
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300722 identical :class:`.datetime` objects. See also :meth:`utcfromtimestamp`.
Georg Brandl116aa622007-08-15 14:28:22 +0000723
Victor Stinner5d272cc2012-03-13 13:35:55 +0100724 .. versionchanged:: 3.3
725 Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
726 is out of the range of values supported by the platform C
Victor Stinner21f58932012-03-14 00:15:40 +0100727 :c:func:`localtime` or :c:func:`gmtime` functions. Raise :exc:`OSError`
728 instead of :exc:`ValueError` on :c:func:`localtime` or :c:func:`gmtime`
729 failure.
Victor Stinner5d272cc2012-03-13 13:35:55 +0100730
Georg Brandl116aa622007-08-15 14:28:22 +0000731
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000732.. classmethod:: datetime.utcfromtimestamp(timestamp)
Georg Brandl116aa622007-08-15 14:28:22 +0000733
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300734 Return the UTC :class:`.datetime` corresponding to the POSIX timestamp, with
Victor Stinnerecc6e662012-03-14 00:39:29 +0100735 :attr:`tzinfo` ``None``. This may raise :exc:`OverflowError`, if the timestamp is
736 out of the range of values supported by the platform C :c:func:`gmtime` function,
737 and :exc:`OSError` on :c:func:`gmtime` failure.
Georg Brandl116aa622007-08-15 14:28:22 +0000738 It's common for this to be restricted to years in 1970 through 2038. See also
739 :meth:`fromtimestamp`.
740
Alexander Belopolsky54afa552011-04-25 13:00:40 -0400741 On the POSIX compliant platforms, ``utcfromtimestamp(timestamp)``
742 is equivalent to the following expression::
743
744 datetime(1970, 1, 1) + timedelta(seconds=timestamp)
745
746 There is no method to obtain the timestamp from a :class:`datetime`
747 instance, but POSIX timestamp corresponding to a :class:`datetime`
748 instance ``dt`` can be easily calculated as follows. For a naive
749 ``dt``::
750
751 timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)
752
753 And for an aware ``dt``::
754
755 timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)
756
Victor Stinner5d272cc2012-03-13 13:35:55 +0100757 .. versionchanged:: 3.3
758 Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
759 is out of the range of values supported by the platform C
Victor Stinner21f58932012-03-14 00:15:40 +0100760 :c:func:`gmtime` function. Raise :exc:`OSError` instead of
761 :exc:`ValueError` on :c:func:`gmtime` failure.
Victor Stinner5d272cc2012-03-13 13:35:55 +0100762
Georg Brandl116aa622007-08-15 14:28:22 +0000763
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000764.. classmethod:: datetime.fromordinal(ordinal)
Georg Brandl116aa622007-08-15 14:28:22 +0000765
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300766 Return the :class:`.datetime` corresponding to the proleptic Gregorian ordinal,
Georg Brandl116aa622007-08-15 14:28:22 +0000767 where January 1 of year 1 has ordinal 1. :exc:`ValueError` is raised unless ``1
768 <= ordinal <= datetime.max.toordinal()``. The hour, minute, second and
769 microsecond of the result are all 0, and :attr:`tzinfo` is ``None``.
770
771
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000772.. classmethod:: datetime.combine(date, time)
Georg Brandl116aa622007-08-15 14:28:22 +0000773
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300774 Return a new :class:`.datetime` object whose date components are equal to the
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800775 given :class:`date` object's, and whose time components and :attr:`tzinfo`
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300776 attributes are equal to the given :class:`.time` object's. For any
777 :class:`.datetime` object *d*,
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800778 ``d == datetime.combine(d.date(), d.timetz())``. If date is a
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300779 :class:`.datetime` object, its time components and :attr:`tzinfo` attributes
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800780 are ignored.
Georg Brandl116aa622007-08-15 14:28:22 +0000781
782
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000783.. classmethod:: datetime.strptime(date_string, format)
Georg Brandl116aa622007-08-15 14:28:22 +0000784
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300785 Return a :class:`.datetime` corresponding to *date_string*, parsed according to
Georg Brandl116aa622007-08-15 14:28:22 +0000786 *format*. This is equivalent to ``datetime(*(time.strptime(date_string,
787 format)[0:6]))``. :exc:`ValueError` is raised if the date_string and format
788 can't be parsed by :func:`time.strptime` or if it returns a value which isn't a
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000789 time tuple. See section :ref:`strftime-strptime-behavior`.
790
Georg Brandl116aa622007-08-15 14:28:22 +0000791
Georg Brandl116aa622007-08-15 14:28:22 +0000792
793Class attributes:
794
Georg Brandl116aa622007-08-15 14:28:22 +0000795.. attribute:: datetime.min
796
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300797 The earliest representable :class:`.datetime`, ``datetime(MINYEAR, 1, 1,
Georg Brandl116aa622007-08-15 14:28:22 +0000798 tzinfo=None)``.
799
800
801.. attribute:: datetime.max
802
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300803 The latest representable :class:`.datetime`, ``datetime(MAXYEAR, 12, 31, 23, 59,
Georg Brandl116aa622007-08-15 14:28:22 +0000804 59, 999999, tzinfo=None)``.
805
806
807.. attribute:: datetime.resolution
808
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300809 The smallest possible difference between non-equal :class:`.datetime` objects,
Georg Brandl116aa622007-08-15 14:28:22 +0000810 ``timedelta(microseconds=1)``.
811
Georg Brandl116aa622007-08-15 14:28:22 +0000812
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000813Instance attributes (read-only):
Georg Brandl116aa622007-08-15 14:28:22 +0000814
815.. attribute:: datetime.year
816
817 Between :const:`MINYEAR` and :const:`MAXYEAR` inclusive.
818
819
820.. attribute:: datetime.month
821
822 Between 1 and 12 inclusive.
823
824
825.. attribute:: datetime.day
826
827 Between 1 and the number of days in the given month of the given year.
828
829
830.. attribute:: datetime.hour
831
832 In ``range(24)``.
833
834
835.. attribute:: datetime.minute
836
837 In ``range(60)``.
838
839
840.. attribute:: datetime.second
841
842 In ``range(60)``.
843
844
845.. attribute:: datetime.microsecond
846
847 In ``range(1000000)``.
848
849
850.. attribute:: datetime.tzinfo
851
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300852 The object passed as the *tzinfo* argument to the :class:`.datetime` constructor,
Georg Brandl116aa622007-08-15 14:28:22 +0000853 or ``None`` if none was passed.
854
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +0000855
Georg Brandl116aa622007-08-15 14:28:22 +0000856Supported operations:
857
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300858+---------------------------------------+--------------------------------+
859| Operation | Result |
860+=======================================+================================+
861| ``datetime2 = datetime1 + timedelta`` | \(1) |
862+---------------------------------------+--------------------------------+
863| ``datetime2 = datetime1 - timedelta`` | \(2) |
864+---------------------------------------+--------------------------------+
865| ``timedelta = datetime1 - datetime2`` | \(3) |
866+---------------------------------------+--------------------------------+
867| ``datetime1 < datetime2`` | Compares :class:`.datetime` to |
868| | :class:`.datetime`. (4) |
869+---------------------------------------+--------------------------------+
Georg Brandl116aa622007-08-15 14:28:22 +0000870
871(1)
872 datetime2 is a duration of timedelta removed from datetime1, moving forward in
873 time if ``timedelta.days`` > 0, or backward if ``timedelta.days`` < 0. The
Senthil Kumarana6bac952011-07-04 11:28:30 -0700874 result has the same :attr:`tzinfo` attribute as the input datetime, and
875 datetime2 - datetime1 == timedelta after. :exc:`OverflowError` is raised if
876 datetime2.year would be smaller than :const:`MINYEAR` or larger than
877 :const:`MAXYEAR`. Note that no time zone adjustments are done even if the
878 input is an aware object.
Georg Brandl116aa622007-08-15 14:28:22 +0000879
880(2)
881 Computes the datetime2 such that datetime2 + timedelta == datetime1. As for
Senthil Kumarana6bac952011-07-04 11:28:30 -0700882 addition, the result has the same :attr:`tzinfo` attribute as the input
883 datetime, and no time zone adjustments are done even if the input is aware.
884 This isn't quite equivalent to datetime1 + (-timedelta), because -timedelta
885 in isolation can overflow in cases where datetime1 - timedelta does not.
Georg Brandl116aa622007-08-15 14:28:22 +0000886
887(3)
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300888 Subtraction of a :class:`.datetime` from a :class:`.datetime` is defined only if
Georg Brandl116aa622007-08-15 14:28:22 +0000889 both operands are naive, or if both are aware. If one is aware and the other is
890 naive, :exc:`TypeError` is raised.
891
Senthil Kumarana6bac952011-07-04 11:28:30 -0700892 If both are naive, or both are aware and have the same :attr:`tzinfo` attribute,
893 the :attr:`tzinfo` attributes are ignored, and the result is a :class:`timedelta`
Georg Brandl116aa622007-08-15 14:28:22 +0000894 object *t* such that ``datetime2 + t == datetime1``. No time zone adjustments
895 are done in this case.
896
Senthil Kumarana6bac952011-07-04 11:28:30 -0700897 If both are aware and have different :attr:`tzinfo` attributes, ``a-b`` acts
898 as if *a* and *b* were first converted to naive UTC datetimes first. The
899 result is ``(a.replace(tzinfo=None) - a.utcoffset()) - (b.replace(tzinfo=None)
900 - b.utcoffset())`` except that the implementation never overflows.
Georg Brandl116aa622007-08-15 14:28:22 +0000901
902(4)
903 *datetime1* is considered less than *datetime2* when *datetime1* precedes
904 *datetime2* in time.
905
906 If one comparand is naive and the other is aware, :exc:`TypeError` is raised.
Senthil Kumarana6bac952011-07-04 11:28:30 -0700907 If both comparands are aware, and have the same :attr:`tzinfo` attribute, the
908 common :attr:`tzinfo` attribute is ignored and the base datetimes are
909 compared. If both comparands are aware and have different :attr:`tzinfo`
910 attributes, the comparands are first adjusted by subtracting their UTC
911 offsets (obtained from ``self.utcoffset()``).
Georg Brandl116aa622007-08-15 14:28:22 +0000912
913 .. note::
914
915 In order to stop comparison from falling back to the default scheme of comparing
916 object addresses, datetime comparison normally raises :exc:`TypeError` if the
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300917 other comparand isn't also a :class:`.datetime` object. However,
Georg Brandl116aa622007-08-15 14:28:22 +0000918 ``NotImplemented`` is returned instead if the other comparand has a
919 :meth:`timetuple` attribute. This hook gives other kinds of date objects a
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300920 chance at implementing mixed-type comparison. If not, when a :class:`.datetime`
Georg Brandl116aa622007-08-15 14:28:22 +0000921 object is compared to an object of a different type, :exc:`TypeError` is raised
922 unless the comparison is ``==`` or ``!=``. The latter cases return
923 :const:`False` or :const:`True`, respectively.
924
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300925:class:`.datetime` objects can be used as dictionary keys. In Boolean contexts,
926all :class:`.datetime` objects are considered to be true.
Georg Brandl116aa622007-08-15 14:28:22 +0000927
928Instance methods:
929
Georg Brandl116aa622007-08-15 14:28:22 +0000930.. method:: datetime.date()
931
932 Return :class:`date` object with same year, month and day.
933
934
935.. method:: datetime.time()
936
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300937 Return :class:`.time` object with same hour, minute, second and microsecond.
Georg Brandl116aa622007-08-15 14:28:22 +0000938 :attr:`tzinfo` is ``None``. See also method :meth:`timetz`.
939
940
941.. method:: datetime.timetz()
942
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300943 Return :class:`.time` object with same hour, minute, second, microsecond, and
Senthil Kumarana6bac952011-07-04 11:28:30 -0700944 tzinfo attributes. See also method :meth:`time`.
Georg Brandl116aa622007-08-15 14:28:22 +0000945
946
947.. method:: datetime.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]])
948
Senthil Kumarana6bac952011-07-04 11:28:30 -0700949 Return a datetime with the same attributes, except for those attributes given
950 new values by whichever keyword arguments are specified. Note that
951 ``tzinfo=None`` can be specified to create a naive datetime from an aware
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800952 datetime with no conversion of date and time data.
Georg Brandl116aa622007-08-15 14:28:22 +0000953
954
955.. method:: datetime.astimezone(tz)
956
Ezio Melotti35ec7f72011-10-02 12:44:50 +0300957 Return a :class:`.datetime` object with new :attr:`tzinfo` attribute *tz*,
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800958 adjusting the date and time data so the result is the same UTC time as
Senthil Kumarana6bac952011-07-04 11:28:30 -0700959 *self*, but in *tz*'s local time.
Georg Brandl116aa622007-08-15 14:28:22 +0000960
961 *tz* must be an instance of a :class:`tzinfo` subclass, and its
962 :meth:`utcoffset` and :meth:`dst` methods must not return ``None``. *self* must
963 be aware (``self.tzinfo`` must not be ``None``, and ``self.utcoffset()`` must
964 not return ``None``).
965
966 If ``self.tzinfo`` is *tz*, ``self.astimezone(tz)`` is equal to *self*: no
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800967 adjustment of date or time data is performed. Else the result is local
Senthil Kumarana6bac952011-07-04 11:28:30 -0700968 time in time zone *tz*, representing the same UTC time as *self*: after
969 ``astz = dt.astimezone(tz)``, ``astz - astz.utcoffset()`` will usually have
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800970 the same date and time data as ``dt - dt.utcoffset()``. The discussion
Senthil Kumarana6bac952011-07-04 11:28:30 -0700971 of class :class:`tzinfo` explains the cases at Daylight Saving Time transition
972 boundaries where this cannot be achieved (an issue only if *tz* models both
973 standard and daylight time).
Georg Brandl116aa622007-08-15 14:28:22 +0000974
975 If you merely want to attach a time zone object *tz* to a datetime *dt* without
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800976 adjustment of date and time data, use ``dt.replace(tzinfo=tz)``. If you
Georg Brandl116aa622007-08-15 14:28:22 +0000977 merely want to remove the time zone object from an aware datetime *dt* without
Senthil Kumaran023c6f72011-07-17 19:01:14 +0800978 conversion of date and time data, use ``dt.replace(tzinfo=None)``.
Georg Brandl116aa622007-08-15 14:28:22 +0000979
980 Note that the default :meth:`tzinfo.fromutc` method can be overridden in a
981 :class:`tzinfo` subclass to affect the result returned by :meth:`astimezone`.
982 Ignoring error cases, :meth:`astimezone` acts like::
983
984 def astimezone(self, tz):
985 if self.tzinfo is tz:
986 return self
987 # Convert self to UTC, and attach the new time zone object.
988 utc = (self - self.utcoffset()).replace(tzinfo=tz)
989 # Convert from UTC to tz's local time.
990 return tz.fromutc(utc)
991
992
993.. method:: datetime.utcoffset()
994
995 If :attr:`tzinfo` is ``None``, returns ``None``, else returns
996 ``self.tzinfo.utcoffset(self)``, and raises an exception if the latter doesn't
997 return ``None``, or a :class:`timedelta` object representing a whole number of
998 minutes with magnitude less than one day.
999
1000
1001.. method:: datetime.dst()
1002
1003 If :attr:`tzinfo` is ``None``, returns ``None``, else returns
1004 ``self.tzinfo.dst(self)``, and raises an exception if the latter doesn't return
1005 ``None``, or a :class:`timedelta` object representing a whole number of minutes
1006 with magnitude less than one day.
1007
1008
1009.. method:: datetime.tzname()
1010
1011 If :attr:`tzinfo` is ``None``, returns ``None``, else returns
1012 ``self.tzinfo.tzname(self)``, raises an exception if the latter doesn't return
1013 ``None`` or a string object,
1014
1015
1016.. method:: datetime.timetuple()
1017
1018 Return a :class:`time.struct_time` such as returned by :func:`time.localtime`.
1019 ``d.timetuple()`` is equivalent to ``time.struct_time((d.year, d.month, d.day,
Alexander Belopolsky64912482010-06-08 18:59:20 +00001020 d.hour, d.minute, d.second, d.weekday(), yday, dst))``, where ``yday =
1021 d.toordinal() - date(d.year, 1, 1).toordinal() + 1`` is the day number within
1022 the current year starting with ``1`` for January 1st. The :attr:`tm_isdst` flag
1023 of the result is set according to the :meth:`dst` method: :attr:`tzinfo` is
Georg Brandl682d7e02010-10-06 10:26:05 +00001024 ``None`` or :meth:`dst` returns ``None``, :attr:`tm_isdst` is set to ``-1``;
Alexander Belopolsky64912482010-06-08 18:59:20 +00001025 else if :meth:`dst` returns a non-zero value, :attr:`tm_isdst` is set to ``1``;
Alexander Belopolskyda62f2f2010-06-09 17:11:01 +00001026 else :attr:`tm_isdst` is set to ``0``.
Georg Brandl116aa622007-08-15 14:28:22 +00001027
1028
1029.. method:: datetime.utctimetuple()
1030
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001031 If :class:`.datetime` instance *d* is naive, this is the same as
Georg Brandl116aa622007-08-15 14:28:22 +00001032 ``d.timetuple()`` except that :attr:`tm_isdst` is forced to 0 regardless of what
1033 ``d.dst()`` returns. DST is never in effect for a UTC time.
1034
1035 If *d* is aware, *d* is normalized to UTC time, by subtracting
Alexander Belopolsky75f94c22010-06-21 15:21:14 +00001036 ``d.utcoffset()``, and a :class:`time.struct_time` for the
1037 normalized time is returned. :attr:`tm_isdst` is forced to 0. Note
1038 that an :exc:`OverflowError` may be raised if *d*.year was
1039 ``MINYEAR`` or ``MAXYEAR`` and UTC adjustment spills over a year
Georg Brandl116aa622007-08-15 14:28:22 +00001040 boundary.
1041
1042
1043.. method:: datetime.toordinal()
1044
1045 Return the proleptic Gregorian ordinal of the date. The same as
1046 ``self.date().toordinal()``.
1047
1048
1049.. method:: datetime.weekday()
1050
1051 Return the day of the week as an integer, where Monday is 0 and Sunday is 6.
1052 The same as ``self.date().weekday()``. See also :meth:`isoweekday`.
1053
1054
1055.. method:: datetime.isoweekday()
1056
1057 Return the day of the week as an integer, where Monday is 1 and Sunday is 7.
1058 The same as ``self.date().isoweekday()``. See also :meth:`weekday`,
1059 :meth:`isocalendar`.
1060
1061
1062.. method:: datetime.isocalendar()
1063
1064 Return a 3-tuple, (ISO year, ISO week number, ISO weekday). The same as
1065 ``self.date().isocalendar()``.
1066
1067
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001068.. method:: datetime.isoformat(sep='T')
Georg Brandl116aa622007-08-15 14:28:22 +00001069
1070 Return a string representing the date and time in ISO 8601 format,
1071 YYYY-MM-DDTHH:MM:SS.mmmmmm or, if :attr:`microsecond` is 0,
1072 YYYY-MM-DDTHH:MM:SS
1073
1074 If :meth:`utcoffset` does not return ``None``, a 6-character string is
1075 appended, giving the UTC offset in (signed) hours and minutes:
1076 YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM or, if :attr:`microsecond` is 0
1077 YYYY-MM-DDTHH:MM:SS+HH:MM
1078
1079 The optional argument *sep* (default ``'T'``) is a one-character separator,
Christian Heimesfe337bf2008-03-23 21:54:12 +00001080 placed between the date and time portions of the result. For example,
Georg Brandl116aa622007-08-15 14:28:22 +00001081
1082 >>> from datetime import tzinfo, timedelta, datetime
1083 >>> class TZ(tzinfo):
1084 ... def utcoffset(self, dt): return timedelta(minutes=-399)
1085 ...
1086 >>> datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
1087 '2002-12-25 00:00:00-06:39'
1088
1089
1090.. method:: datetime.__str__()
1091
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001092 For a :class:`.datetime` instance *d*, ``str(d)`` is equivalent to
Georg Brandl116aa622007-08-15 14:28:22 +00001093 ``d.isoformat(' ')``.
1094
1095
1096.. method:: datetime.ctime()
1097
1098 Return a string representing the date and time, for example ``datetime(2002, 12,
1099 4, 20, 30, 40).ctime() == 'Wed Dec 4 20:30:40 2002'``. ``d.ctime()`` is
1100 equivalent to ``time.ctime(time.mktime(d.timetuple()))`` on platforms where the
Georg Brandl60203b42010-10-06 10:11:56 +00001101 native C :c:func:`ctime` function (which :func:`time.ctime` invokes, but which
Georg Brandl116aa622007-08-15 14:28:22 +00001102 :meth:`datetime.ctime` does not invoke) conforms to the C standard.
1103
1104
1105.. method:: datetime.strftime(format)
1106
1107 Return a string representing the date and time, controlled by an explicit format
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001108 string. See section :ref:`strftime-strptime-behavior`.
1109
Georg Brandl116aa622007-08-15 14:28:22 +00001110
Christian Heimesfe337bf2008-03-23 21:54:12 +00001111Examples of working with datetime objects:
1112
1113.. doctest::
1114
Christian Heimes895627f2007-12-08 17:28:33 +00001115 >>> from datetime import datetime, date, time
1116 >>> # Using datetime.combine()
1117 >>> d = date(2005, 7, 14)
1118 >>> t = time(12, 30)
1119 >>> datetime.combine(d, t)
1120 datetime.datetime(2005, 7, 14, 12, 30)
1121 >>> # Using datetime.now() or datetime.utcnow()
Christian Heimesfe337bf2008-03-23 21:54:12 +00001122 >>> datetime.now() # doctest: +SKIP
Christian Heimes895627f2007-12-08 17:28:33 +00001123 datetime.datetime(2007, 12, 6, 16, 29, 43, 79043) # GMT +1
Christian Heimesfe337bf2008-03-23 21:54:12 +00001124 >>> datetime.utcnow() # doctest: +SKIP
Christian Heimes895627f2007-12-08 17:28:33 +00001125 datetime.datetime(2007, 12, 6, 15, 29, 43, 79060)
1126 >>> # Using datetime.strptime()
1127 >>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
1128 >>> dt
1129 datetime.datetime(2006, 11, 21, 16, 30)
1130 >>> # Using datetime.timetuple() to get tuple of all attributes
1131 >>> tt = dt.timetuple()
Christian Heimesfe337bf2008-03-23 21:54:12 +00001132 >>> for it in tt: # doctest: +SKIP
Neal Norwitz752abd02008-05-13 04:55:24 +00001133 ... print(it)
Georg Brandl48310cd2009-01-03 21:18:54 +00001134 ...
Christian Heimes895627f2007-12-08 17:28:33 +00001135 2006 # year
1136 11 # month
1137 21 # day
1138 16 # hour
1139 30 # minute
1140 0 # second
1141 1 # weekday (0 = Monday)
1142 325 # number of days since 1st January
1143 -1 # dst - method tzinfo.dst() returned None
1144 >>> # Date in ISO format
1145 >>> ic = dt.isocalendar()
Christian Heimesfe337bf2008-03-23 21:54:12 +00001146 >>> for it in ic: # doctest: +SKIP
Neal Norwitz752abd02008-05-13 04:55:24 +00001147 ... print(it)
Christian Heimes895627f2007-12-08 17:28:33 +00001148 ...
1149 2006 # ISO year
1150 47 # ISO week
1151 2 # ISO weekday
1152 >>> # Formatting datetime
1153 >>> dt.strftime("%A, %d. %B %Y %I:%M%p")
1154 'Tuesday, 21. November 2006 04:30PM'
1155
Christian Heimesfe337bf2008-03-23 21:54:12 +00001156Using datetime with tzinfo:
Christian Heimes895627f2007-12-08 17:28:33 +00001157
1158 >>> from datetime import timedelta, datetime, tzinfo
1159 >>> class GMT1(tzinfo):
1160 ... def __init__(self): # DST starts last Sunday in March
1161 ... d = datetime(dt.year, 4, 1) # ends last Sunday in October
1162 ... self.dston = d - timedelta(days=d.weekday() + 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001163 ... d = datetime(dt.year, 11, 1)
Christian Heimes895627f2007-12-08 17:28:33 +00001164 ... self.dstoff = d - timedelta(days=d.weekday() + 1)
1165 ... def utcoffset(self, dt):
1166 ... return timedelta(hours=1) + self.dst(dt)
Georg Brandl48310cd2009-01-03 21:18:54 +00001167 ... def dst(self, dt):
Christian Heimes895627f2007-12-08 17:28:33 +00001168 ... if self.dston <= dt.replace(tzinfo=None) < self.dstoff:
1169 ... return timedelta(hours=1)
1170 ... else:
1171 ... return timedelta(0)
1172 ... def tzname(self,dt):
1173 ... return "GMT +1"
Georg Brandl48310cd2009-01-03 21:18:54 +00001174 ...
Christian Heimes895627f2007-12-08 17:28:33 +00001175 >>> class GMT2(tzinfo):
1176 ... def __init__(self):
Georg Brandl48310cd2009-01-03 21:18:54 +00001177 ... d = datetime(dt.year, 4, 1)
Christian Heimes895627f2007-12-08 17:28:33 +00001178 ... self.dston = d - timedelta(days=d.weekday() + 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001179 ... d = datetime(dt.year, 11, 1)
Christian Heimes895627f2007-12-08 17:28:33 +00001180 ... self.dstoff = d - timedelta(days=d.weekday() + 1)
1181 ... def utcoffset(self, dt):
1182 ... return timedelta(hours=1) + self.dst(dt)
1183 ... def dst(self, dt):
1184 ... if self.dston <= dt.replace(tzinfo=None) < self.dstoff:
1185 ... return timedelta(hours=2)
1186 ... else:
1187 ... return timedelta(0)
1188 ... def tzname(self,dt):
1189 ... return "GMT +2"
Georg Brandl48310cd2009-01-03 21:18:54 +00001190 ...
Christian Heimes895627f2007-12-08 17:28:33 +00001191 >>> gmt1 = GMT1()
1192 >>> # Daylight Saving Time
1193 >>> dt1 = datetime(2006, 11, 21, 16, 30, tzinfo=gmt1)
1194 >>> dt1.dst()
1195 datetime.timedelta(0)
1196 >>> dt1.utcoffset()
1197 datetime.timedelta(0, 3600)
1198 >>> dt2 = datetime(2006, 6, 14, 13, 0, tzinfo=gmt1)
1199 >>> dt2.dst()
1200 datetime.timedelta(0, 3600)
1201 >>> dt2.utcoffset()
1202 datetime.timedelta(0, 7200)
1203 >>> # Convert datetime to another time zone
1204 >>> dt3 = dt2.astimezone(GMT2())
1205 >>> dt3 # doctest: +ELLIPSIS
1206 datetime.datetime(2006, 6, 14, 14, 0, tzinfo=<GMT2 object at 0x...>)
1207 >>> dt2 # doctest: +ELLIPSIS
1208 datetime.datetime(2006, 6, 14, 13, 0, tzinfo=<GMT1 object at 0x...>)
1209 >>> dt2.utctimetuple() == dt3.utctimetuple()
1210 True
Georg Brandl48310cd2009-01-03 21:18:54 +00001211
Christian Heimes895627f2007-12-08 17:28:33 +00001212
Georg Brandl116aa622007-08-15 14:28:22 +00001213
1214.. _datetime-time:
1215
1216:class:`time` Objects
1217---------------------
1218
1219A time object represents a (local) time of day, independent of any particular
1220day, and subject to adjustment via a :class:`tzinfo` object.
1221
Georg Brandlc2a4f4f2009-04-10 09:03:43 +00001222.. class:: time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001223
1224 All arguments are optional. *tzinfo* may be ``None``, or an instance of a
Georg Brandl5c106642007-11-29 17:41:05 +00001225 :class:`tzinfo` subclass. The remaining arguments may be integers, in the
Georg Brandl116aa622007-08-15 14:28:22 +00001226 following ranges:
1227
1228 * ``0 <= hour < 24``
1229 * ``0 <= minute < 60``
1230 * ``0 <= second < 60``
1231 * ``0 <= microsecond < 1000000``.
1232
1233 If an argument outside those ranges is given, :exc:`ValueError` is raised. All
1234 default to ``0`` except *tzinfo*, which defaults to :const:`None`.
1235
1236Class attributes:
1237
1238
1239.. attribute:: time.min
1240
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001241 The earliest representable :class:`.time`, ``time(0, 0, 0, 0)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001242
1243
1244.. attribute:: time.max
1245
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001246 The latest representable :class:`.time`, ``time(23, 59, 59, 999999)``.
Georg Brandl116aa622007-08-15 14:28:22 +00001247
1248
1249.. attribute:: time.resolution
1250
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001251 The smallest possible difference between non-equal :class:`.time` objects,
1252 ``timedelta(microseconds=1)``, although note that arithmetic on
1253 :class:`.time` objects is not supported.
Georg Brandl116aa622007-08-15 14:28:22 +00001254
Georg Brandl116aa622007-08-15 14:28:22 +00001255
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001256Instance attributes (read-only):
Georg Brandl116aa622007-08-15 14:28:22 +00001257
1258.. attribute:: time.hour
1259
1260 In ``range(24)``.
1261
1262
1263.. attribute:: time.minute
1264
1265 In ``range(60)``.
1266
1267
1268.. attribute:: time.second
1269
1270 In ``range(60)``.
1271
1272
1273.. attribute:: time.microsecond
1274
1275 In ``range(1000000)``.
1276
1277
1278.. attribute:: time.tzinfo
1279
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001280 The object passed as the tzinfo argument to the :class:`.time` constructor, or
Georg Brandl116aa622007-08-15 14:28:22 +00001281 ``None`` if none was passed.
1282
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001283
Georg Brandl116aa622007-08-15 14:28:22 +00001284Supported operations:
1285
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001286* comparison of :class:`.time` to :class:`.time`, where *a* is considered less
Georg Brandl116aa622007-08-15 14:28:22 +00001287 than *b* when *a* precedes *b* in time. If one comparand is naive and the other
1288 is aware, :exc:`TypeError` is raised. If both comparands are aware, and have
Senthil Kumarana6bac952011-07-04 11:28:30 -07001289 the same :attr:`tzinfo` attribute, the common :attr:`tzinfo` attribute is
1290 ignored and the base times are compared. If both comparands are aware and
1291 have different :attr:`tzinfo` attributes, the comparands are first adjusted by
1292 subtracting their UTC offsets (obtained from ``self.utcoffset()``). In order
1293 to stop mixed-type comparisons from falling back to the default comparison by
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001294 object address, when a :class:`.time` object is compared to an object of a
Senthil Kumaran3aac1792011-07-04 11:43:51 -07001295 different type, :exc:`TypeError` is raised unless the comparison is ``==`` or
Senthil Kumarana6bac952011-07-04 11:28:30 -07001296 ``!=``. The latter cases return :const:`False` or :const:`True`, respectively.
Georg Brandl116aa622007-08-15 14:28:22 +00001297
1298* hash, use as dict key
1299
1300* efficient pickling
1301
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001302* in Boolean contexts, a :class:`.time` object is considered to be true if and
Georg Brandl116aa622007-08-15 14:28:22 +00001303 only if, after converting it to minutes and subtracting :meth:`utcoffset` (or
1304 ``0`` if that's ``None``), the result is non-zero.
1305
Georg Brandl116aa622007-08-15 14:28:22 +00001306
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001307Instance methods:
Georg Brandl116aa622007-08-15 14:28:22 +00001308
1309.. method:: time.replace([hour[, minute[, second[, microsecond[, tzinfo]]]]])
1310
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001311 Return a :class:`.time` with the same value, except for those attributes given
Senthil Kumarana6bac952011-07-04 11:28:30 -07001312 new values by whichever keyword arguments are specified. Note that
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001313 ``tzinfo=None`` can be specified to create a naive :class:`.time` from an
1314 aware :class:`.time`, without conversion of the time data.
Georg Brandl116aa622007-08-15 14:28:22 +00001315
1316
1317.. method:: time.isoformat()
1318
1319 Return a string representing the time in ISO 8601 format, HH:MM:SS.mmmmmm or, if
1320 self.microsecond is 0, HH:MM:SS If :meth:`utcoffset` does not return ``None``, a
1321 6-character string is appended, giving the UTC offset in (signed) hours and
1322 minutes: HH:MM:SS.mmmmmm+HH:MM or, if self.microsecond is 0, HH:MM:SS+HH:MM
1323
1324
1325.. method:: time.__str__()
1326
1327 For a time *t*, ``str(t)`` is equivalent to ``t.isoformat()``.
1328
1329
1330.. method:: time.strftime(format)
1331
1332 Return a string representing the time, controlled by an explicit format string.
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001333 See section :ref:`strftime-strptime-behavior`.
Georg Brandl116aa622007-08-15 14:28:22 +00001334
1335
1336.. method:: time.utcoffset()
1337
1338 If :attr:`tzinfo` is ``None``, returns ``None``, else returns
1339 ``self.tzinfo.utcoffset(None)``, and raises an exception if the latter doesn't
1340 return ``None`` or a :class:`timedelta` object representing a whole number of
1341 minutes with magnitude less than one day.
1342
1343
1344.. method:: time.dst()
1345
1346 If :attr:`tzinfo` is ``None``, returns ``None``, else returns
1347 ``self.tzinfo.dst(None)``, and raises an exception if the latter doesn't return
1348 ``None``, or a :class:`timedelta` object representing a whole number of minutes
1349 with magnitude less than one day.
1350
1351
1352.. method:: time.tzname()
1353
1354 If :attr:`tzinfo` is ``None``, returns ``None``, else returns
1355 ``self.tzinfo.tzname(None)``, or raises an exception if the latter doesn't
1356 return ``None`` or a string object.
1357
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001358
Christian Heimesfe337bf2008-03-23 21:54:12 +00001359Example:
Georg Brandl48310cd2009-01-03 21:18:54 +00001360
Christian Heimes895627f2007-12-08 17:28:33 +00001361 >>> from datetime import time, tzinfo
1362 >>> class GMT1(tzinfo):
1363 ... def utcoffset(self, dt):
Georg Brandl48310cd2009-01-03 21:18:54 +00001364 ... return timedelta(hours=1)
1365 ... def dst(self, dt):
Christian Heimes895627f2007-12-08 17:28:33 +00001366 ... return timedelta(0)
1367 ... def tzname(self,dt):
1368 ... return "Europe/Prague"
1369 ...
1370 >>> t = time(12, 10, 30, tzinfo=GMT1())
1371 >>> t # doctest: +ELLIPSIS
1372 datetime.time(12, 10, 30, tzinfo=<GMT1 object at 0x...>)
1373 >>> gmt = GMT1()
1374 >>> t.isoformat()
1375 '12:10:30+01:00'
1376 >>> t.dst()
1377 datetime.timedelta(0)
1378 >>> t.tzname()
1379 'Europe/Prague'
1380 >>> t.strftime("%H:%M:%S %Z")
1381 '12:10:30 Europe/Prague'
1382
Georg Brandl116aa622007-08-15 14:28:22 +00001383
1384.. _datetime-tzinfo:
1385
1386:class:`tzinfo` Objects
1387-----------------------
1388
Brett Cannone1327f72009-01-29 04:10:21 +00001389:class:`tzinfo` is an abstract base class, meaning that this class should not be
Georg Brandl116aa622007-08-15 14:28:22 +00001390instantiated directly. You need to derive a concrete subclass, and (at least)
1391supply implementations of the standard :class:`tzinfo` methods needed by the
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001392:class:`.datetime` methods you use. The :mod:`datetime` module supplies
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001393a simple concrete subclass of :class:`tzinfo` :class:`timezone` which can reprsent
1394timezones with fixed offset from UTC such as UTC itself or North American EST and
1395EDT.
Georg Brandl116aa622007-08-15 14:28:22 +00001396
1397An instance of (a concrete subclass of) :class:`tzinfo` can be passed to the
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001398constructors for :class:`.datetime` and :class:`.time` objects. The latter objects
Senthil Kumarana6bac952011-07-04 11:28:30 -07001399view their attributes as being in local time, and the :class:`tzinfo` object
Georg Brandl116aa622007-08-15 14:28:22 +00001400supports methods revealing offset of local time from UTC, the name of the time
1401zone, and DST offset, all relative to a date or time object passed to them.
1402
1403Special requirement for pickling: A :class:`tzinfo` subclass must have an
1404:meth:`__init__` method that can be called with no arguments, else it can be
1405pickled but possibly not unpickled again. This is a technical requirement that
1406may be relaxed in the future.
1407
1408A concrete subclass of :class:`tzinfo` may need to implement the following
1409methods. Exactly which methods are needed depends on the uses made of aware
1410:mod:`datetime` objects. If in doubt, simply implement all of them.
1411
1412
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001413.. method:: tzinfo.utcoffset(dt)
Georg Brandl116aa622007-08-15 14:28:22 +00001414
1415 Return offset of local time from UTC, in minutes east of UTC. If local time is
1416 west of UTC, this should be negative. Note that this is intended to be the
1417 total offset from UTC; for example, if a :class:`tzinfo` object represents both
1418 time zone and DST adjustments, :meth:`utcoffset` should return their sum. If
1419 the UTC offset isn't known, return ``None``. Else the value returned must be a
1420 :class:`timedelta` object specifying a whole number of minutes in the range
1421 -1439 to 1439 inclusive (1440 = 24\*60; the magnitude of the offset must be less
1422 than one day). Most implementations of :meth:`utcoffset` will probably look
1423 like one of these two::
1424
1425 return CONSTANT # fixed-offset class
1426 return CONSTANT + self.dst(dt) # daylight-aware class
1427
1428 If :meth:`utcoffset` does not return ``None``, :meth:`dst` should not return
1429 ``None`` either.
1430
1431 The default implementation of :meth:`utcoffset` raises
1432 :exc:`NotImplementedError`.
1433
1434
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001435.. method:: tzinfo.dst(dt)
Georg Brandl116aa622007-08-15 14:28:22 +00001436
1437 Return the daylight saving time (DST) adjustment, in minutes east of UTC, or
1438 ``None`` if DST information isn't known. Return ``timedelta(0)`` if DST is not
1439 in effect. If DST is in effect, return the offset as a :class:`timedelta` object
1440 (see :meth:`utcoffset` for details). Note that DST offset, if applicable, has
1441 already been added to the UTC offset returned by :meth:`utcoffset`, so there's
1442 no need to consult :meth:`dst` unless you're interested in obtaining DST info
1443 separately. For example, :meth:`datetime.timetuple` calls its :attr:`tzinfo`
Senthil Kumarana6bac952011-07-04 11:28:30 -07001444 attribute's :meth:`dst` method to determine how the :attr:`tm_isdst` flag
1445 should be set, and :meth:`tzinfo.fromutc` calls :meth:`dst` to account for
1446 DST changes when crossing time zones.
Georg Brandl116aa622007-08-15 14:28:22 +00001447
1448 An instance *tz* of a :class:`tzinfo` subclass that models both standard and
1449 daylight times must be consistent in this sense:
1450
1451 ``tz.utcoffset(dt) - tz.dst(dt)``
1452
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001453 must return the same result for every :class:`.datetime` *dt* with ``dt.tzinfo ==
Georg Brandl116aa622007-08-15 14:28:22 +00001454 tz`` For sane :class:`tzinfo` subclasses, this expression yields the time
1455 zone's "standard offset", which should not depend on the date or the time, but
1456 only on geographic location. The implementation of :meth:`datetime.astimezone`
1457 relies on this, but cannot detect violations; it's the programmer's
1458 responsibility to ensure it. If a :class:`tzinfo` subclass cannot guarantee
1459 this, it may be able to override the default implementation of
1460 :meth:`tzinfo.fromutc` to work correctly with :meth:`astimezone` regardless.
1461
1462 Most implementations of :meth:`dst` will probably look like one of these two::
1463
Sandro Tosi4bfe03a2011-11-01 10:32:05 +01001464 def dst(self, dt):
Georg Brandl116aa622007-08-15 14:28:22 +00001465 # a fixed-offset class: doesn't account for DST
1466 return timedelta(0)
1467
1468 or ::
1469
Sandro Tosi4bfe03a2011-11-01 10:32:05 +01001470 def dst(self, dt):
Georg Brandl116aa622007-08-15 14:28:22 +00001471 # Code to set dston and dstoff to the time zone's DST
1472 # transition times based on the input dt.year, and expressed
1473 # in standard local time. Then
1474
1475 if dston <= dt.replace(tzinfo=None) < dstoff:
1476 return timedelta(hours=1)
1477 else:
1478 return timedelta(0)
1479
1480 The default implementation of :meth:`dst` raises :exc:`NotImplementedError`.
1481
1482
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001483.. method:: tzinfo.tzname(dt)
Georg Brandl116aa622007-08-15 14:28:22 +00001484
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001485 Return the time zone name corresponding to the :class:`.datetime` object *dt*, as
Georg Brandl116aa622007-08-15 14:28:22 +00001486 a string. Nothing about string names is defined by the :mod:`datetime` module,
1487 and there's no requirement that it mean anything in particular. For example,
1488 "GMT", "UTC", "-500", "-5:00", "EDT", "US/Eastern", "America/New York" are all
1489 valid replies. Return ``None`` if a string name isn't known. Note that this is
1490 a method rather than a fixed string primarily because some :class:`tzinfo`
1491 subclasses will wish to return different names depending on the specific value
1492 of *dt* passed, especially if the :class:`tzinfo` class is accounting for
1493 daylight time.
1494
1495 The default implementation of :meth:`tzname` raises :exc:`NotImplementedError`.
1496
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001497
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001498These methods are called by a :class:`.datetime` or :class:`.time` object, in
1499response to their methods of the same names. A :class:`.datetime` object passes
1500itself as the argument, and a :class:`.time` object passes ``None`` as the
Georg Brandl116aa622007-08-15 14:28:22 +00001501argument. A :class:`tzinfo` subclass's methods should therefore be prepared to
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001502accept a *dt* argument of ``None``, or of class :class:`.datetime`.
Georg Brandl116aa622007-08-15 14:28:22 +00001503
1504When ``None`` is passed, it's up to the class designer to decide the best
1505response. For example, returning ``None`` is appropriate if the class wishes to
1506say that time objects don't participate in the :class:`tzinfo` protocols. It
1507may be more useful for ``utcoffset(None)`` to return the standard UTC offset, as
1508there is no other convention for discovering the standard offset.
1509
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001510When a :class:`.datetime` object is passed in response to a :class:`.datetime`
Georg Brandl116aa622007-08-15 14:28:22 +00001511method, ``dt.tzinfo`` is the same object as *self*. :class:`tzinfo` methods can
1512rely on this, unless user code calls :class:`tzinfo` methods directly. The
1513intent is that the :class:`tzinfo` methods interpret *dt* as being in local
1514time, and not need worry about objects in other timezones.
1515
1516There is one more :class:`tzinfo` method that a subclass may wish to override:
1517
1518
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001519.. method:: tzinfo.fromutc(dt)
Georg Brandl116aa622007-08-15 14:28:22 +00001520
Senthil Kumaran023c6f72011-07-17 19:01:14 +08001521 This is called from the default :class:`datetime.astimezone()`
1522 implementation. When called from that, ``dt.tzinfo`` is *self*, and *dt*'s
1523 date and time data are to be viewed as expressing a UTC time. The purpose
1524 of :meth:`fromutc` is to adjust the date and time data, returning an
Senthil Kumarana6bac952011-07-04 11:28:30 -07001525 equivalent datetime in *self*'s local time.
Georg Brandl116aa622007-08-15 14:28:22 +00001526
1527 Most :class:`tzinfo` subclasses should be able to inherit the default
1528 :meth:`fromutc` implementation without problems. It's strong enough to handle
1529 fixed-offset time zones, and time zones accounting for both standard and
1530 daylight time, and the latter even if the DST transition times differ in
1531 different years. An example of a time zone the default :meth:`fromutc`
1532 implementation may not handle correctly in all cases is one where the standard
1533 offset (from UTC) depends on the specific date and time passed, which can happen
1534 for political reasons. The default implementations of :meth:`astimezone` and
1535 :meth:`fromutc` may not produce the result you want if the result is one of the
1536 hours straddling the moment the standard offset changes.
1537
1538 Skipping code for error cases, the default :meth:`fromutc` implementation acts
1539 like::
1540
1541 def fromutc(self, dt):
1542 # raise ValueError error if dt.tzinfo is not self
1543 dtoff = dt.utcoffset()
1544 dtdst = dt.dst()
1545 # raise ValueError if dtoff is None or dtdst is None
1546 delta = dtoff - dtdst # this is self's standard offset
1547 if delta:
1548 dt += delta # convert to standard local time
1549 dtdst = dt.dst()
1550 # raise ValueError if dtdst is None
1551 if dtdst:
1552 return dt + dtdst
1553 else:
1554 return dt
1555
1556Example :class:`tzinfo` classes:
1557
1558.. literalinclude:: ../includes/tzinfo-examples.py
1559
1560
1561Note that there are unavoidable subtleties twice per year in a :class:`tzinfo`
1562subclass accounting for both standard and daylight time, at the DST transition
1563points. For concreteness, consider US Eastern (UTC -0500), where EDT begins the
Georg Brandl7bc6e4f2010-03-21 10:03:36 +00001564minute after 1:59 (EST) on the second Sunday in March, and ends the minute after
15651:59 (EDT) on the first Sunday in November::
Georg Brandl116aa622007-08-15 14:28:22 +00001566
1567 UTC 3:MM 4:MM 5:MM 6:MM 7:MM 8:MM
1568 EST 22:MM 23:MM 0:MM 1:MM 2:MM 3:MM
1569 EDT 23:MM 0:MM 1:MM 2:MM 3:MM 4:MM
1570
1571 start 22:MM 23:MM 0:MM 1:MM 3:MM 4:MM
1572
1573 end 23:MM 0:MM 1:MM 1:MM 2:MM 3:MM
1574
1575When DST starts (the "start" line), the local wall clock leaps from 1:59 to
15763:00. A wall time of the form 2:MM doesn't really make sense on that day, so
1577``astimezone(Eastern)`` won't deliver a result with ``hour == 2`` on the day DST
1578begins. In order for :meth:`astimezone` to make this guarantee, the
1579:meth:`rzinfo.dst` method must consider times in the "missing hour" (2:MM for
1580Eastern) to be in daylight time.
1581
1582When DST ends (the "end" line), there's a potentially worse problem: there's an
1583hour that can't be spelled unambiguously in local wall time: the last hour of
1584daylight time. In Eastern, that's times of the form 5:MM UTC on the day
1585daylight time ends. The local wall clock leaps from 1:59 (daylight time) back
1586to 1:00 (standard time) again. Local times of the form 1:MM are ambiguous.
1587:meth:`astimezone` mimics the local clock's behavior by mapping two adjacent UTC
1588hours into the same local hour then. In the Eastern example, UTC times of the
1589form 5:MM and 6:MM both map to 1:MM when converted to Eastern. In order for
1590:meth:`astimezone` to make this guarantee, the :meth:`tzinfo.dst` method must
1591consider times in the "repeated hour" to be in standard time. This is easily
1592arranged, as in the example, by expressing DST switch times in the time zone's
1593standard local time.
1594
1595Applications that can't bear such ambiguities should avoid using hybrid
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001596:class:`tzinfo` subclasses; there are no ambiguities when using :class:`timezone`,
1597or any other fixed-offset :class:`tzinfo` subclass (such as a class representing
1598only EST (fixed offset -5 hours), or only EDT (fixed offset -4 hours)).
1599
1600
1601.. _datetime-timezone:
1602
1603:class:`timezone` Objects
1604--------------------------
1605
Alexander Belopolsky6d3c9a62011-05-04 10:28:26 -04001606The :class:`timezone` class is a subclass of :class:`tzinfo`, each
1607instance of which represents a timezone defined by a fixed offset from
1608UTC. Note that objects of this class cannot be used to represent
1609timezone information in the locations where different offsets are used
1610in different days of the year or where historical changes have been
1611made to civil time.
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001612
1613
1614.. class:: timezone(offset[, name])
1615
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001616 The *offset* argument must be specified as a :class:`timedelta`
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001617 object representing the difference between the local time and UTC. It must
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001618 be strictly between ``-timedelta(hours=24)`` and
1619 ``timedelta(hours=24)`` and represent a whole number of minutes,
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001620 otherwise :exc:`ValueError` is raised.
1621
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001622 The *name* argument is optional. If specified it must be a string that
1623 is used as the value returned by the ``tzname(dt)`` method. Otherwise,
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001624 ``tzname(dt)`` returns a string 'UTCsHH:MM', where s is the sign of
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001625 *offset*, HH and MM are two digits of ``offset.hours`` and
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001626 ``offset.minutes`` respectively.
1627
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001628.. method:: timezone.utcoffset(dt)
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001629
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001630 Return the fixed value specified when the :class:`timezone` instance is
1631 constructed. The *dt* argument is ignored. The return value is a
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001632 :class:`timedelta` instance equal to the difference between the
1633 local time and UTC.
1634
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001635.. method:: timezone.tzname(dt)
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001636
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001637 Return the fixed value specified when the :class:`timezone` instance is
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001638 constructed or a string 'UTCsHH:MM', where s is the sign of
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001639 *offset*, HH and MM are two digits of ``offset.hours`` and
1640 ``offset.minutes`` respectively.
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001641
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001642.. method:: timezone.dst(dt)
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001643
1644 Always returns ``None``.
1645
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001646.. method:: timezone.fromutc(dt)
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001647
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001648 Return ``dt + offset``. The *dt* argument must be an aware
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001649 :class:`.datetime` instance, with ``tzinfo`` set to ``self``.
Alexander Belopolsky4e749a12010-06-14 14:15:50 +00001650
1651Class attributes:
1652
1653.. attribute:: timezone.utc
1654
Alexander Belopolskyb39a0c22010-06-15 19:24:52 +00001655 The UTC timezone, ``timezone(timedelta(0))``.
Georg Brandl48310cd2009-01-03 21:18:54 +00001656
Georg Brandl116aa622007-08-15 14:28:22 +00001657
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001658.. _strftime-strptime-behavior:
Georg Brandl116aa622007-08-15 14:28:22 +00001659
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001660:meth:`strftime` and :meth:`strptime` Behavior
1661----------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +00001662
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001663:class:`date`, :class:`.datetime`, and :class:`.time` objects all support a
Georg Brandl116aa622007-08-15 14:28:22 +00001664``strftime(format)`` method, to create a string representing the time under the
1665control of an explicit format string. Broadly speaking, ``d.strftime(fmt)``
1666acts like the :mod:`time` module's ``time.strftime(fmt, d.timetuple())``
1667although not all objects support a :meth:`timetuple` method.
1668
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001669Conversely, the :meth:`datetime.strptime` class method creates a
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001670:class:`.datetime` object from a string representing a date and time and a
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001671corresponding format string. ``datetime.strptime(date_string, format)`` is
1672equivalent to ``datetime(*(time.strptime(date_string, format)[0:6]))``.
1673
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001674For :class:`.time` objects, the format codes for year, month, and day should not
Georg Brandl116aa622007-08-15 14:28:22 +00001675be used, as time objects have no such values. If they're used anyway, ``1900``
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001676is substituted for the year, and ``1`` for the month and day.
Georg Brandl116aa622007-08-15 14:28:22 +00001677
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001678For :class:`date` objects, the format codes for hours, minutes, seconds, and
1679microseconds should not be used, as :class:`date` objects have no such
1680values. If they're used anyway, ``0`` is substituted for them.
1681
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001682For a naive object, the ``%z`` and ``%Z`` format codes are replaced by empty
1683strings.
1684
1685For an aware object:
1686
1687``%z``
1688 :meth:`utcoffset` is transformed into a 5-character string of the form +HHMM or
1689 -HHMM, where HH is a 2-digit string giving the number of UTC offset hours, and
1690 MM is a 2-digit string giving the number of UTC offset minutes. For example, if
1691 :meth:`utcoffset` returns ``timedelta(hours=-3, minutes=-30)``, ``%z`` is
1692 replaced with the string ``'-0330'``.
1693
1694``%Z``
1695 If :meth:`tzname` returns ``None``, ``%Z`` is replaced by an empty string.
1696 Otherwise ``%Z`` is replaced by the returned value, which must be a string.
Georg Brandl116aa622007-08-15 14:28:22 +00001697
Georg Brandl116aa622007-08-15 14:28:22 +00001698The full set of format codes supported varies across platforms, because Python
1699calls the platform C library's :func:`strftime` function, and platform
Georg Brandl48310cd2009-01-03 21:18:54 +00001700variations are common.
Christian Heimes895627f2007-12-08 17:28:33 +00001701
1702The following is a list of all the format codes that the C standard (1989
1703version) requires, and these work on all platforms with a standard C
1704implementation. Note that the 1999 version of the C standard added additional
1705format codes.
Georg Brandl116aa622007-08-15 14:28:22 +00001706
Christian Heimes895627f2007-12-08 17:28:33 +00001707+-----------+--------------------------------+-------+
1708| Directive | Meaning | Notes |
1709+===========+================================+=======+
1710| ``%a`` | Locale's abbreviated weekday | |
1711| | name. | |
1712+-----------+--------------------------------+-------+
1713| ``%A`` | Locale's full weekday name. | |
1714+-----------+--------------------------------+-------+
1715| ``%b`` | Locale's abbreviated month | |
1716| | name. | |
1717+-----------+--------------------------------+-------+
1718| ``%B`` | Locale's full month name. | |
1719+-----------+--------------------------------+-------+
1720| ``%c`` | Locale's appropriate date and | |
1721| | time representation. | |
1722+-----------+--------------------------------+-------+
1723| ``%d`` | Day of the month as a decimal | |
1724| | number [01,31]. | |
1725+-----------+--------------------------------+-------+
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001726| ``%f`` | Microsecond as a decimal | \(1) |
1727| | number [0,999999], zero-padded | |
1728| | on the left | |
1729+-----------+--------------------------------+-------+
Christian Heimes895627f2007-12-08 17:28:33 +00001730| ``%H`` | Hour (24-hour clock) as a | |
1731| | decimal number [00,23]. | |
1732+-----------+--------------------------------+-------+
1733| ``%I`` | Hour (12-hour clock) as a | |
1734| | decimal number [01,12]. | |
1735+-----------+--------------------------------+-------+
1736| ``%j`` | Day of the year as a decimal | |
1737| | number [001,366]. | |
1738+-----------+--------------------------------+-------+
1739| ``%m`` | Month as a decimal number | |
1740| | [01,12]. | |
1741+-----------+--------------------------------+-------+
1742| ``%M`` | Minute as a decimal number | |
1743| | [00,59]. | |
1744+-----------+--------------------------------+-------+
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001745| ``%p`` | Locale's equivalent of either | \(2) |
Christian Heimes895627f2007-12-08 17:28:33 +00001746| | AM or PM. | |
1747+-----------+--------------------------------+-------+
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001748| ``%S`` | Second as a decimal number | \(3) |
Alexander Belopolsky9971e002011-01-10 22:56:14 +00001749| | [00,59]. | |
Christian Heimes895627f2007-12-08 17:28:33 +00001750+-----------+--------------------------------+-------+
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001751| ``%U`` | Week number of the year | \(4) |
Christian Heimes895627f2007-12-08 17:28:33 +00001752| | (Sunday as the first day of | |
1753| | the week) as a decimal number | |
1754| | [00,53]. All days in a new | |
1755| | year preceding the first | |
1756| | Sunday are considered to be in | |
1757| | week 0. | |
1758+-----------+--------------------------------+-------+
1759| ``%w`` | Weekday as a decimal number | |
1760| | [0(Sunday),6]. | |
1761+-----------+--------------------------------+-------+
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001762| ``%W`` | Week number of the year | \(4) |
Christian Heimes895627f2007-12-08 17:28:33 +00001763| | (Monday as the first day of | |
1764| | the week) as a decimal number | |
1765| | [00,53]. All days in a new | |
1766| | year preceding the first | |
1767| | Monday are considered to be in | |
1768| | week 0. | |
1769+-----------+--------------------------------+-------+
1770| ``%x`` | Locale's appropriate date | |
1771| | representation. | |
1772+-----------+--------------------------------+-------+
1773| ``%X`` | Locale's appropriate time | |
1774| | representation. | |
1775+-----------+--------------------------------+-------+
1776| ``%y`` | Year without century as a | |
1777| | decimal number [00,99]. | |
1778+-----------+--------------------------------+-------+
Alexander Belopolsky085556a2011-01-10 23:28:33 +00001779| ``%Y`` | Year with century as a decimal | \(5) |
Alexander Belopolsky89da3492011-05-02 13:14:24 -04001780| | number [0001,9999]. | |
Christian Heimes895627f2007-12-08 17:28:33 +00001781+-----------+--------------------------------+-------+
Alexander Belopolsky085556a2011-01-10 23:28:33 +00001782| ``%z`` | UTC offset in the form +HHMM | \(6) |
Christian Heimes895627f2007-12-08 17:28:33 +00001783| | or -HHMM (empty string if the | |
1784| | the object is naive). | |
1785+-----------+--------------------------------+-------+
1786| ``%Z`` | Time zone name (empty string | |
1787| | if the object is naive). | |
1788+-----------+--------------------------------+-------+
1789| ``%%`` | A literal ``'%'`` character. | |
1790+-----------+--------------------------------+-------+
Georg Brandl116aa622007-08-15 14:28:22 +00001791
Christian Heimes895627f2007-12-08 17:28:33 +00001792Notes:
1793
1794(1)
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001795 When used with the :meth:`strptime` method, the ``%f`` directive
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001796 accepts from one to six digits and zero pads on the right. ``%f`` is
Benjamin Petersonb58dda72009-01-18 22:27:04 +00001797 an extension to the set of format characters in the C standard (but
1798 implemented separately in datetime objects, and therefore always
1799 available).
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001800
1801(2)
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001802 When used with the :meth:`strptime` method, the ``%p`` directive only affects
Christian Heimes895627f2007-12-08 17:28:33 +00001803 the output hour field if the ``%I`` directive is used to parse the hour.
1804
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001805(3)
Alexander Belopolsky9971e002011-01-10 22:56:14 +00001806 Unlike :mod:`time` module, :mod:`datetime` module does not support
1807 leap seconds.
Christian Heimes895627f2007-12-08 17:28:33 +00001808
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001809(4)
Benjamin Peterson5e55b3e2010-02-03 02:35:45 +00001810 When used with the :meth:`strptime` method, ``%U`` and ``%W`` are only used in
Christian Heimes895627f2007-12-08 17:28:33 +00001811 calculations when the day of the week and the year are specified.
1812
Christian Heimesdd15f6c2008-03-16 00:07:10 +00001813(5)
Alexander Belopolsky89da3492011-05-02 13:14:24 -04001814 The :meth:`strptime` method can
Alexander Belopolsky5fc850b2011-01-10 23:31:51 +00001815 parse years in the full [1, 9999] range, but years < 1000 must be
1816 zero-filled to 4-digit width.
Alexander Belopolsky085556a2011-01-10 23:28:33 +00001817
1818 .. versionchanged:: 3.2
1819 In previous versions, :meth:`strftime` method was restricted to
1820 years >= 1900.
1821
Alexander Belopolsky5611a1c2011-05-02 14:14:48 -04001822 .. versionchanged:: 3.3
1823 In version 3.2, :meth:`strftime` method was restricted to
1824 years >= 1000.
1825
Alexander Belopolsky085556a2011-01-10 23:28:33 +00001826(6)
Christian Heimes895627f2007-12-08 17:28:33 +00001827 For example, if :meth:`utcoffset` returns ``timedelta(hours=-3, minutes=-30)``,
1828 ``%z`` is replaced with the string ``'-0330'``.
Alexander Belopolskyca94f552010-06-17 18:30:34 +00001829
Georg Brandl67b21b72010-08-17 15:07:14 +00001830.. versionchanged:: 3.2
1831 When the ``%z`` directive is provided to the :meth:`strptime` method, an
Ezio Melotti35ec7f72011-10-02 12:44:50 +03001832 aware :class:`.datetime` object will be produced. The ``tzinfo`` of the
Georg Brandl67b21b72010-08-17 15:07:14 +00001833 result will be set to a :class:`timezone` instance.