blob: 1adbc8e863cc60abace76b5192c4432b5c270e07 [file] [log] [blame]
Fred Drakebbdb2502002-12-23 18:58:06 +00001\section{\module{datetime} ---
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00002 Basic date and time types}
3
4\declaremodule{builtin}{datetime}
5\modulesynopsis{Basic date and time types.}
Fred Drakebbdb2502002-12-23 18:58:06 +00006\moduleauthor{Tim Peters}{tim@zope.com}
7\sectionauthor{Tim Peters}{tim@zope.com}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00008\sectionauthor{A.M. Kuchling}{amk@amk.ca}
9
Fred Drakebbdb2502002-12-23 18:58:06 +000010\newcommand{\Naive}{Na\"ive}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000011\newcommand{\naive}{na\"ive}
12
13The \module{datetime} module supplies classes for manipulating dates
14and times in both simple and complex ways. While date and time
15arithmetic is supported, the focus of the implementation is on
16efficient field extraction, for output formatting and manipulation.
17
18There are two kinds of date and time objects: ``\naive'' and ``aware''.
19This distinction refers to whether the object has any notion of time
20zone, daylight savings time, or other kind of algorithmic or political
21time adjustment. Whether a \naive\ \class{datetime} object represents
22Coordinated Universal Time (UTC), local time, or time in some other
23timezone is purely up to the program, just like it's up to the program
24whether a particular number represents meters, miles, or mass. \Naive\
25\class{datetime} objects are easy to understand and to work with, at
26the cost of ignoring some aspects of reality.
27
28For applications requiring more, ``aware'' \class{datetime} subclasses add an
29optional time zone information object to the basic \naive\ classes.
30These \class{tzinfo} objects capture information about the offset from
31UTC time, the time zone name, and whether Daylight Savings Time is in
32effect. Note that no concrete \class{tzinfo} classes are supplied by
33the \module{datetime} module. Instead, they provide a framework for
34incorporating the level of detail an app may require. The rules for
35time adjustment across the world are more political than rational, and
36there is no standard suitable for every app.
37
38The \module{datetime} module exports the following constants:
39
40\begin{datadesc}{MINYEAR}
Fred Drakebbdb2502002-12-23 18:58:06 +000041 The smallest year number allowed in a \class{date},
42 \class{datetime}, or \class{datetimetz} object. \constant{MINYEAR}
43 is \code{1}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000044\end{datadesc}
45
46\begin{datadesc}{MAXYEAR}
Fred Drakebbdb2502002-12-23 18:58:06 +000047 The largest year number allowed in a \class{date}, \class{datetime},
48 or \class{datetimetz} object. \constant{MAXYEAR} is \code{9999}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000049\end{datadesc}
50
51
52\subsection{Available Types}
53
Fred Drakebbdb2502002-12-23 18:58:06 +000054\begin{classdesc*}{date}
55 An idealized \naive\ date, assuming the current Gregorian calendar
56 always was, and always will be, in effect.
57 Attributes: \member{year}, \member{month}, and \member{day}.
58\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000059
Fred Drakebbdb2502002-12-23 18:58:06 +000060\begin{classdesc*}{time}
61 An idealized \naive\ time, independent of any particular day, assuming
62 that every day has exactly 24*60*60 seconds (there is no notion
63 of "leap seconds" here).
64 Attributes: \member{hour}, \member{minute}, \member{second}, and
65 \member{microsecond}
66\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000067
Fred Drakebbdb2502002-12-23 18:58:06 +000068\begin{classdesc*}{datetime}
69 A combination of a \naive\ date and a \naive\ time.
70 Attributes: \member{year}, \member{month}, \member{day},
71 \member{hour}, \member{minute}, \member{second},
72 and \member{microsecond}.
73\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000074
Fred Drakebbdb2502002-12-23 18:58:06 +000075\begin{classdesc*}{timedelta}
76 A duration, expressing the difference between two \class{date},
77 \class{time}, or \class{datetime} instances, to microsecond
78 resolution.
79\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000080
Fred Drakebbdb2502002-12-23 18:58:06 +000081\begin{classdesc*}{tzinfo}
82 An abstract base class for time zone information objects. These
83 are used by the \class{datetimetz} and \class{timetz} classes to
84 provided a customizable notion of time adjustment (for example, to
85 account for time zone and/or daylight savings time).
86\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000087
Fred Drakebbdb2502002-12-23 18:58:06 +000088\begin{classdesc*}{timetz}
89 An aware subclass of \class{time}, supporting a customizable notion of
90 time adjustment.
91\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000092
Fred Drakebbdb2502002-12-23 18:58:06 +000093\begin{classdesc*}{datetimetz}
94 An aware subclass of \class{datetime}, supporting a customizable notion of
95 time adjustment.
96\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000097
98Objects of these types are immutable.
99
Fred Drakebbdb2502002-12-23 18:58:06 +0000100Objects of the \class{date}, \class{datetime}, and \class{time} types
101are always \naive.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000102
Fred Drakebbdb2502002-12-23 18:58:06 +0000103An object \code{D} of type \class{timetz} or \class{datetimetz} may be
104\naive\ or aware. \code{D} is aware if \code{D.tzinfo} is not
105\code{None}, and \code{D.tzinfo.utcoffset(D)} does not return
106\code{None}. If \code{D.tzinfo} is \code{None}, or if \code{D.tzinfo}
107is not \code{None} but \code{D.tzinfo.utcoffset(D)} returns
108\code{None}, \code{D} is \naive.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000109
Fred Drakebbdb2502002-12-23 18:58:06 +0000110The distinction between \naive\ and aware doesn't apply to
111\code{timedelta} objects.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000112
Fred Drakebbdb2502002-12-23 18:58:06 +0000113Subclass relationships:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000114
Fred Drakebbdb2502002-12-23 18:58:06 +0000115\begin{verbatim}
116object
117 timedelta
118 tzinfo
119 time
120 timetz
121 date
122 datetime
123 datetimetz
124\end{verbatim}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000125
Fred Drakebbdb2502002-12-23 18:58:06 +0000126\subsection{\class{timedelta} \label{datetime-timedelta}}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000127
Fred Drakebbdb2502002-12-23 18:58:06 +0000128A \class{timedelta} object represents a duration, the difference
129between two dates or times.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000130
131Constructor:
132
133 timedelta(days=0, seconds=0, microseconds=0,
Fred Drakebbdb2502002-12-23 18:58:06 +0000134 \# The following should only be used as keyword args:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000135 milliseconds=0, minutes=0, hours=0, weeks=0)
136
137 All arguments are optional. Arguments may be ints, longs, or floats,
138 and may be positive or negative.
139
140 Only days, seconds and microseconds are stored internally. Arguments
141 are converted to those units:
142
143 A millisecond is converted 1000 microseconds.
144 A minute is converted to 60 seconds.
145 An hour is converted to 3600 seconds.
146 A week is converted to 7 days.
147
148 and days, seconds and microseconds are then normalized so that the
149 representation is unique, with
150
151 0 <= microseconds < 1000000
152 0 <= seconds < 3600*24 (the number of seconds in one day)
153 -999999999 <= days <= 999999999
154
155 If any argument is a float, and there are fractional microseconds,
156 the fractional microseconds left over from all arguments are combined
157 and their sum is rounded to the nearest microsecond. If no
158 argument is a flost, the conversion and normalization processes
159 are exact (no information is lost).
160
161 If the normalized value of days lies outside the indicated range,
Fred Drakebbdb2502002-12-23 18:58:06 +0000162 \exception{OverflowError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000163
164 Note that normalization of negative values may be surprising at first.
165 For example,
166
Fred Drakebbdb2502002-12-23 18:58:06 +0000167\begin{verbatim}
168>>> d = timedelta(microseconds=-1)
169>>> (d.days, d.seconds, d.microseconds)
170(-1, 86399, 999999)
171\end{verbatim}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000172
173
174Class attributes:
175
176 .min
177 The most negative timedelta object, timedelta(-999999999).
178
179 .max
180 The most positive timedelta object,
181 timedelta(days=999999999, hours=23, minutes=59, seconds=59,
182 microseconds=999999)
183
184 .resolution
185 The smallest possible difference between non-equal timedelta
Fred Drakebbdb2502002-12-23 18:58:06 +0000186 objects, \code{timedelta(microseconds=1)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000187
188 Note that, because of normalization, timedelta.max > -timedelta.min.
189 -timedelta.max is not representable as a timedelta object.
190
191Instance attributes (read-only):
192
193 .days between -999999999 and 999999999 inclusive
194 .seconds between 0 and 86399 inclusive
195 .microseconds between 0 and 999999 inclusive
196
197Supported operations:
198
Fred Drakebbdb2502002-12-23 18:58:06 +0000199\begin{itemize}
200 \item
201 timedelta + timedelta -> timedelta
202 This is exact, but may overflow. After
203 t1 = t2 + t3
204 t1-t2 == t3 and t1-t3 == t2 are true.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000205
Fred Drakebbdb2502002-12-23 18:58:06 +0000206 \item
207 timedelta - timedelta -> timedelta
208 This is exact, but may overflow. After
209 t1 = t2 - t3
210 t2 == t1 + t3 is true.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000211
Fred Drakebbdb2502002-12-23 18:58:06 +0000212 \item
213 timedelta * (int or long) -> timedelta
214 (int or long) * timedelta -> timedelta
215 This is exact, but may overflow. After
216 t1 = t2 * i
217 t1 // i == t2 is true, provided i != 0. In general,
218 t * i == t * (i-1) + t
219 is true.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000220
Fred Drakebbdb2502002-12-23 18:58:06 +0000221 \item
222 timedelta // (int or long) -> timedelta
223 The floor is computed and the remainder (if any) is thrown away.
224 Division by 0 raises \exception{ZeroDivisionError}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000225
Fred Drakebbdb2502002-12-23 18:58:06 +0000226 \item
227 certain additions and subtractions with date, datetime, and datimetz
228 objects (see below)
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000229
Fred Drakebbdb2502002-12-23 18:58:06 +0000230 \item
231 +timedelta -> timedelta
232 Returns a timedelta object with the same value.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000233
Fred Drakebbdb2502002-12-23 18:58:06 +0000234 \item
235 -timedelta -> timedelta
236 -t is equivalent to timedelta(-t.days, -t.seconds, -t.microseconds),
237 and to t*-1. This is exact, but may overflow (for example,
238 -timedelta.max is not representable as a timedelta object).
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000239
Fred Drakebbdb2502002-12-23 18:58:06 +0000240 \item
241 abs(timedelta) -> timedelta
242 abs(t) is equivalent to +t when t.days >= 0, and to -t when
243 t.days < 0. This is exact, and cannot overflow.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000244
Fred Drakebbdb2502002-12-23 18:58:06 +0000245 \item
246 comparison of timedelta to timedelta; the timedelta representing
247 the smaller duration is considered to be the smaller timedelta
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000248
Fred Drakebbdb2502002-12-23 18:58:06 +0000249 \item
250 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000251
Fred Drakebbdb2502002-12-23 18:58:06 +0000252 \item
253 efficient pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000254
Fred Drakebbdb2502002-12-23 18:58:06 +0000255 \item
256 in Boolean contexts, a timedelta object is considred to be true
257 if and only if it isn't equal to \code{timedelta(0)}
258\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000259
260
261\subsection{\class{date} \label{datetime-date}}
262
263A date object represents a date (year, month and day) in an idealized
264calendar, the current Gregorian calendar indefinitely extended in both
265directions. January 1 of year 1 is called day number 1, January 2 of year
2661 is called day number 2, and so on. This matches the definition of the
267"proleptic Gregorian" calendar in Dershowitz and Reingold's book
268"Calendrical Calculations", where it's the base calendar for all
269computations. See the book for algorithms for converting between
270proleptic Gregorian ordinals and many other calendar systems.
271
272Constructor:
273
274 date(year, month, day)
275
276 All arguments are required. Arguments may be ints or longs, in the
277 following ranges:
278
279 MINYEAR <= year <= MAXYEAR
280 1 <= month <= 12
281 1 <= day <= number of days in the given month and year
282
Fred Drakebbdb2502002-12-23 18:58:06 +0000283 If an argument outside those ranges is given,
284 \exception{ValueError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000285
286Other constructors (class methods):
287
288 - today()
289 Return the current local date. This is equivalent to
290 date.fromtimestamp(time.time()).
291
292 - fromtimestamp(timestamp)
Fred Drakebbdb2502002-12-23 18:58:06 +0000293 Return the local date corresponding to the POSIX timestamp, such
294 as is returned by \function{time.time()}. This may raise
295 \exception{ValueError}, if the timestamp is out of the range of
296 values supported by the platform C \cfunction{localtime()}
297 function. It's common for this to be restricted to years in 1970
298 through 2038.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000299
300 - fromordinal(ordinal)
301 Return the date corresponding to the proleptic Gregorian ordinal,
Fred Drakebbdb2502002-12-23 18:58:06 +0000302 where January 1 of year 1 has ordinal 1. \exception{ValueError}
303 is raised unless 1 <= ordinal <= date.max.toordinal(). For any
304 date d, date.fromordinal(d.toordinal()) == d.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000305
306Class attributes:
307
308 .min
Fred Drakebbdb2502002-12-23 18:58:06 +0000309 The earliest representable date, \code{date(MINYEAR, 1, 1)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000310
311 .max
Fred Drakebbdb2502002-12-23 18:58:06 +0000312 The latest representable date, \code{date(MAXYEAR, 12, 31)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000313
314 .resolution
315 The smallest possible difference between non-equal date
Fred Drakebbdb2502002-12-23 18:58:06 +0000316 objects, \code{timedelta(days=1)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000317
318Instance attributes (read-only):
319
Fred Drakebbdb2502002-12-23 18:58:06 +0000320 .year between \constant{MINYEAR} and \constant{MAXYEAR} inclusive
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000321 .month between 1 and 12 inclusive
322 .day between 1 and the number of days in the given month
323 of the given year
324
325Supported operations:
326
Fred Drakebbdb2502002-12-23 18:58:06 +0000327\begin{itemize}
328 \item
329 date1 + timedelta -> date2
330 timedelta + date1 -> date2
331 date2 is timedelta.days days removed from the date1, moving forward
332 in time if timedelta.days > 0, or backward if timedetla.days < 0.
333 date2 - date1 == timedelta.days after. timedelta.seconds and
334 timedelta.microseconds are ignored. \exception{OverflowError} is
335 raised if date2.year would be smaller than \constant{MINYEAR} or
336 larger than \constant{MAXYEAR}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000337
Fred Drakebbdb2502002-12-23 18:58:06 +0000338 \item
339 date1 - timedelta -> date2
340 Computes the date2 such that date2 + timedelta == date1. This
341 isn't quite equivalent to date1 + (-timedelta), because -timedelta
342 in isolation can overflow in cases where date1 - timedelta does
343 not. timedelta.seconds and timedelta.microseconds are ignored.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000344
Fred Drakebbdb2502002-12-23 18:58:06 +0000345 \item
346 date1 - date2 -> timedelta
347 This is exact, and cannot overflow. timedelta.seconds and
348 timedelta.microseconds are 0, and date2 + timedelta == date1
349 after.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000350
Fred Drakebbdb2502002-12-23 18:58:06 +0000351 \item
352 comparison of date to date, where date1 is considered less than
353 date2 when date1 precedes date2 in time. In other words,
354 date1 < date2 if and only if date1.toordinal() < date2.toordinal().
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000355
Fred Drakebbdb2502002-12-23 18:58:06 +0000356 \item
357 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000358
Fred Drakebbdb2502002-12-23 18:58:06 +0000359 \item
360 efficient pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000361
Fred Drakebbdb2502002-12-23 18:58:06 +0000362 \item
363 in Boolean contexts, all date objects are considered to be true
364\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000365
366Instance methods:
367
Tim Peters12bf3392002-12-24 05:41:27 +0000368 - replace(year=, month=, day=)
369 Return a date with the same value, except for those fields given
370 new values by whichever keyword arguments are specified. For
371 example, if \code{d == date(2002, 12, 31)}, then
372 \code{d.replace(day=26) == date(2000, 12, 26)}.
373
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000374 - timetuple()
Fred Drakebbdb2502002-12-23 18:58:06 +0000375 Return a 9-element tuple of the form returned by
376 \function{time.localtime()}. The hours, minutes and seconds are
377 0, and the DST flag is -1.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000378 d.timetuple() is equivalent to
379 (d.year, d.month, d.day,
Fred Drakebbdb2502002-12-23 18:58:06 +0000380 0, 0, 0, \# h, m, s
381 d.weekday(), \# 0 is Monday
382 d.toordinal() - date(d.year, 1, 1).toordinal() + 1, \# day of year
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000383 -1)
384
385 - toordinal()
386 Return the proleptic Gregorian ordinal of the date, where January 1
Fred Drakebbdb2502002-12-23 18:58:06 +0000387 of year 1 has ordinal 1. For any date object \var{d},
388 \code{date.fromordinal(\var{d}.toordinal()) == \var{d}}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000389
390 - weekday()
391 Return the day of the week as an integer, where Monday is 0 and
392 Sunday is 6. For example, date(2002, 12, 4).weekday() == 2, a
393 Wednesday.
Fred Drakebbdb2502002-12-23 18:58:06 +0000394 See also \method{isoweekday()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000395
396 - isoweekday()
397 Return the day of the week as an integer, where Monday is 1 and
398 Sunday is 7. For example, date(2002, 12, 4).isoweekday() == 3, a
399 Wednesday.
Fred Drakebbdb2502002-12-23 18:58:06 +0000400 See also \method{weekday()}, \method{isocalendar()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000401
402 - isocalendar()
403 Return a 3-tuple, (ISO year, ISO week number, ISO weekday).
404
405 The ISO calendar is a widely used variant of the Gregorian calendar.
Fred Drakebbdb2502002-12-23 18:58:06 +0000406 See \url{http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000407 for a good explanation.
408
409 The ISO year consists of 52 or 53 full weeks, and where a week starts
410 on a Monday and ends on a Sunday. The first week of an ISO year is
411 the first (Gregorian) calendar week of a year containing a Thursday.
412 This is called week number 1, and the ISO year of that Thursday is
413 the same as its Gregorian year.
414
415 For example, 2004 begins on a Thursday, so the first week of ISO
416 year 2004 begins on Monday, 29 Dec 2003 and ends on Sunday, 4 Jan
417 2004, so that
418
419 date(2003, 12, 29).isocalendar() == (2004, 1, 1)
420 date(2004, 1, 4).isocalendar() == (2004, 1, 7)
421
422 - isoformat()
423 Return a string representing the date in ISO 8601 format,
424 'YYYY-MM-DD'. For example,
425 date(2002, 12, 4).isoformat() == '2002-12-04'.
426
427 - __str__()
Fred Drakebbdb2502002-12-23 18:58:06 +0000428 For a date \var{d}, \code{str(\var{d})} is equivalent to
429 \code{\var{d}.isoformat()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000430
431 - ctime()
432 Return a string representing the date, for example
433 date(2002, 12, 4).ctime() == 'Wed Dec 4 00:00:00 2002'.
434 d.ctime() is equivalent to time.ctime(time.mktime(d.timetuple()))
Fred Drakebbdb2502002-12-23 18:58:06 +0000435 on platforms where the native C \cfunction{ctime()} function
436 (which \function{time.ctime()} invokes, but which
437 \method{date.ctime()} does not invoke) conforms to the C standard.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000438
439 - strftime(format)
440 Return a string representing the date, controlled by an explicit
441 format string. Format codes referring to hours, minutes or seconds
Fred Drakebbdb2502002-12-23 18:58:06 +0000442 will see 0 values.
443 See the section on \method{strftime()} behavior.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000444
445
446\subsection{\class{datetime} \label{datetime-datetime}}
447
Fred Drakebbdb2502002-12-23 18:58:06 +0000448A \class{datetime} object is a single object containing all the
449information from a date object and a time object. Like a date object,
450\class{datetime} assumes the current Gregorian calendar extended in
451both directions; like a time object, \class{datetime} assumes there
452are exactly 3600*24 seconds in every day.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000453
454Constructor:
455
456 datetime(year, month, day,
457 hour=0, minute=0, second=0, microsecond=0)
458
459 The year, month and day arguments are required. Arguments may be ints
460 or longs, in the following ranges:
461
462 MINYEAR <= year <= MAXYEAR
463 1 <= month <= 12
464 1 <= day <= number of days in the given month and year
465 0 <= hour < 24
466 0 <= minute < 60
467 0 <= second < 60
468 0 <= microsecond < 1000000
469
Fred Drakebbdb2502002-12-23 18:58:06 +0000470 If an argument outside those ranges is given,
471 \exception{ValueError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000472
473Other constructors (class methods):
474
475 - today()
476 Return the current local datetime. This is equivalent to
Fred Drakebbdb2502002-12-23 18:58:06 +0000477 \code{datetime.fromtimestamp(time.time())}.
478 See also \method{now()}, \method{fromtimestamp()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000479
480 - now()
Fred Drakebbdb2502002-12-23 18:58:06 +0000481 Return the current local datetime. This is like \method{today()},
482 but, if possible, supplies more precision than can be gotten from
483 going through a \function{time.time()} timestamp (for example,
484 this may be possible on platforms that supply the C
485 \cfunction{gettimeofday()} function).
486 See also \method{today()}, \method{utcnow()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000487
488 - utcnow()
Fred Drakebbdb2502002-12-23 18:58:06 +0000489 Return the current UTC datetime. This is like \method{now()}, but
490 returns the current UTC date and time.
491 See also \method{now()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000492
493 - fromtimestamp(timestamp)
Fred Drakebbdb2502002-12-23 18:58:06 +0000494 Return the local \class{datetime} corresponding to the \POSIX{}
495 timestamp, such as is returned by \function{time.time()}. This
496 may raise \exception{ValueError}, if the timestamp is out of the
497 range of values supported by the platform C
498 \cfunction{localtime()} function. It's common for this to be
499 restricted to years in 1970 through 2038.
500 See also \method{utcfromtimestamp()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000501
502 - utcfromtimestamp(timestamp)
Fred Drakebbdb2502002-12-23 18:58:06 +0000503 Return the UTC \class{datetime} corresponding to the \POSIX{}
504 timestamp. This may raise \exception{ValueError}, if the
505 timestamp is out of the range of values supported by the platform
506 C \cfunction{gmtime()} function. It's common for this to be
507 restricted to years in 1970 through 2038.
508 See also \method{fromtimestamp()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000509
510 - fromordinal(ordinal)
Fred Drakebbdb2502002-12-23 18:58:06 +0000511 Return the \class{datetime} corresponding to the proleptic
512 Gregorian ordinal, where January 1 of year 1 has ordinal 1.
513 \exception{ValueError} is raised unless 1 <= ordinal <=
514 datetime.max.toordinal(). The hour, minute, second and
515 microsecond of the result are all 0.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000516
517 - combine(date, time)
Fred Drakebbdb2502002-12-23 18:58:06 +0000518 Return a new \class{datetime} object whose date components are
519 equal to the given date object's, and whose time components are
520 equal to the given time object's. For any \class{datetime} object
521 d, d == datetime.combine(d.date(), d.time()).
522 If date is a \class{datetime} or \class{datetimetz} object, its
523 time components are ignored. If date is \class{datetimetz}
524 object, its \member{tzinfo} component is also ignored. If time is
525 a \class{timetz} object, its \member{tzinfo} component is ignored.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000526
527Class attributes:
528
529 .min
530 The earliest representable datetime,
531 datetime(MINYEAR, 1, 1).
532
533 .max
534 The latest representable datetime,
535 datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999).
536
537 .resolution
538 The smallest possible difference between non-equal datetime
539 objects, timedelta(microseconds=1).
540
541Instance attributes (read-only):
542
Fred Drakebbdb2502002-12-23 18:58:06 +0000543 .year between \constant{MINYEAR} and \constant{MAXYEAR} inclusive
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000544 .month between 1 and 12 inclusive
545 .day between 1 and the number of days in the given month
546 of the given year
547 .hour in range(24)
548 .minute in range(60)
549 .second in range(60)
550 .microsecond in range(1000000)
551
552Supported operations:
553
Fred Drakebbdb2502002-12-23 18:58:06 +0000554\begin{itemize}
555 \item
556 datetime1 + timedelta -> datetime2
557 timedelta + datetime1 -> datetime2
558 datetime2 is a duration of timedelta removed from datetime1, moving
559 forward in time if timedelta.days > 0, or backward if
560 timedelta.days < 0. datetime2 - datetime1 == timedelta after.
561 \exception{OverflowError} is raised if datetime2.year would be
562 smaller than \constant{MINYEAR} or larger than \constant{MAXYEAR}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000563
Fred Drakebbdb2502002-12-23 18:58:06 +0000564 \item
565 datetime1 - timedelta -> datetime2
566 Computes the datetime2 such that datetime2 + timedelta == datetime1.
567 This isn't quite equivalent to datetime1 + (-timedelta), because
568 -timedelta in isolation can overflow in cases where
569 datetime1 - timedelta does not.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000570
Fred Drakebbdb2502002-12-23 18:58:06 +0000571 \item
572 datetime1 - datetime2 -> timedelta
573 This is exact, and cannot overflow.
574 datetime2 + timedelta == datetime1 after.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000575
Fred Drakebbdb2502002-12-23 18:58:06 +0000576 \item
577 comparison of \class{datetime} to datetime, where datetime1 is
578 considered less than datetime2 when datetime1 precedes datetime2
579 in time.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000580
Fred Drakebbdb2502002-12-23 18:58:06 +0000581 \item
582 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000583
Fred Drakebbdb2502002-12-23 18:58:06 +0000584 \item
585 efficient pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000586
Fred Drakebbdb2502002-12-23 18:58:06 +0000587 \item
588 in Boolean contexts, all \class{datetime} objects are considered
589 to be true
590\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000591
592Instance methods:
593
594 - date()
595 Return date object with same year, month and day.
596
597 - time()
598 Return time object with same hour, minute, second and microsecond.
599
Tim Peters12bf3392002-12-24 05:41:27 +0000600 - replace(year=, month=, day=, hour=, minute=, second=, microsecond=)
601 Return a datetime with the same value, except for those fields given
602 new values by whichever keyword arguments are specified.
603
Tim Peters80475bb2002-12-25 07:40:55 +0000604 - astimezone(tz)
605 Return a \class{datetimetz} with the same date and time fields, and
606 with \member{tzinfo} member \var{tz}. \var{tz} must be an instance
607 of a \class{tzinfo} subclass.
608
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000609 - timetuple()
Fred Drakebbdb2502002-12-23 18:58:06 +0000610 Return a 9-element tuple of the form returned by
611 \function{time.localtime()}.
612 The DST flag is -1. \code{d.timetuple()} is equivalent to
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000613 (d.year, d.month, d.day,
614 d.hour, d.minute, d.second,
Fred Drakebbdb2502002-12-23 18:58:06 +0000615 d.weekday(), \# 0 is Monday
616 d.toordinal() - date(d.year, 1, 1).toordinal() + 1, \# day of year
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000617 -1)
618
619 - toordinal()
620 Return the proleptic Gregorian ordinal of the date. The same as
Fred Drakebbdb2502002-12-23 18:58:06 +0000621 \method{date.toordinal()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000622
623 - weekday()
624 Return the day of the week as an integer, where Monday is 0 and
Fred Drakebbdb2502002-12-23 18:58:06 +0000625 Sunday is 6. The same as \method{date.weekday()}.
626 See also \method{isoweekday()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000627
628 - isoweekday()
629 Return the day of the week as an integer, where Monday is 1 and
Fred Drakebbdb2502002-12-23 18:58:06 +0000630 Sunday is 7. The same as \method{date.isoweekday()}.
631 See also \method{weekday()}, \method{isocalendar()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000632
633 - isocalendar()
634 Return a 3-tuple, (ISO year, ISO week number, ISO weekday). The
Fred Drakebbdb2502002-12-23 18:58:06 +0000635 same as \method{date.isocalendar()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000636
637 - isoformat(sep='T')
638 Return a string representing the date and time in ISO 8601 format,
639 YYYY-MM-DDTHH:MM:SS.mmmmmm
640 or, if self.microsecond is 0,
641 YYYY-MM-DDTHH:MM:SS
Fred Drakebbdb2502002-12-23 18:58:06 +0000642 The optional argument \var{sep} (default \code{'T'}) is a
643 one-character separator, placed between the date and time portions
644 of the result. For example,
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000645 datetime(2002, 12, 4, 1, 2, 3, 4).isoformat(' ') ==
646 '2002-12-04 01:02:03.000004'
647
648 - __str__()
Fred Drakebbdb2502002-12-23 18:58:06 +0000649 For a \class{datetime} instance \var{d}, \code{str(\var{d})} is
650 equivalent to \code{\var{d}.isoformat(' ')}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000651
652 - ctime()
653 Return a string representing the date, for example
654 datetime(2002, 12, 4, 20, 30, 40).ctime() == 'Wed Dec 4 20:30:40 2002'.
Fred Drakebbdb2502002-12-23 18:58:06 +0000655 \code{d.ctime()} is equivalent to
656 \code{time.ctime(time.mktime(d.timetuple()))} on platforms where
657 the native C \cfunction{ctime()} function (which
658 \function{time.ctime()} invokes, but which
659 \method{datetime.ctime()} does not invoke) conforms to the C
660 standard.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000661
662 - strftime(format)
663 Return a string representing the date and time, controlled by an
Fred Drakebbdb2502002-12-23 18:58:06 +0000664 explicit format string. See the section on \method{strftime()}
665 behavior.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000666
667
668\subsection{\class{time} \label{datetime-time}}
669
670A time object represents an idealized time of day, independent of day
671and timezone.
672
673Constructor:
674
675 time(hour=0, minute=0, second=0, microsecond=0)
676
677 All arguments are optional. They may be ints or longs, in the
678 following ranges:
679
680 0 <= hour < 24
681 0 <= minute < 60
682 0 <= second < 60
683 0 <= microsecond < 1000000
684
Fred Drakebbdb2502002-12-23 18:58:06 +0000685 If an argument outside those ranges is given,
686 \exception{ValueError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000687
688Class attributes:
689
690 .min
691 The earliest representable time, time(0, 0, 0, 0).
692
693 .max
694 The latest representable time, time(23, 59, 59, 999999).
695
696 .resolution
697 The smallest possible difference between non-equal time
698 objects, timedelta(microseconds=1), although note that
699 arithmetic on time objects is not supported.
700
701Instance attributes (read-only):
702
703 .hour in range(24)
704 .minute in range(60)
705 .second in range(60)
706 .microsecond in range(1000000)
707
708Supported operations:
709
Fred Drakebbdb2502002-12-23 18:58:06 +0000710\begin{itemize}
711 \item
712 comparison of time to time, where time1 is considered
713 less than time2 when time1 precedes time2 in time.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000714
Fred Drakebbdb2502002-12-23 18:58:06 +0000715 \item
716 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000717
Fred Drakebbdb2502002-12-23 18:58:06 +0000718 \item
719 efficient pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000720
Fred Drakebbdb2502002-12-23 18:58:06 +0000721 \item
722 in Boolean contexts, a time object is considered to be true
723 if and only if it isn't equal to time(0)
724\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000725
726Instance methods:
727
Tim Peters12bf3392002-12-24 05:41:27 +0000728 - replace(hour=, minute=, second=, microsecond=)
729 Return a time with the same value, except for those fields given
730 new values by whichever keyword arguments are specified.
731
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000732 - isoformat()
733 Return a string representing the time in ISO 8601 format,
734 HH:MM:SS.mmmmmm
735 or, if self.microsecond is 0
736 HH:MM:SS
737
738 - __str__()
Fred Drakebbdb2502002-12-23 18:58:06 +0000739 For a time \var{t}, \code{str(\var{t})} is equivalent to
740 \code{\var{t}.isoformat()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000741
742 - strftime(format)
743 Return a string representing the time, controlled by an explicit
Fred Drakebbdb2502002-12-23 18:58:06 +0000744 format string. See the section on \method{strftime()} behavior.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000745
746
747\subsection{\class{tzinfo} \label{datetime-tzinfo}}
748
Fred Drakebbdb2502002-12-23 18:58:06 +0000749\class{tzinfo} is an abstract base clase, meaning that this class
750should not be instantiated directly. You need to derive a concrete
751subclass, and (at least) supply implementations of the standard
752\class{tzinfo} methods needed by the \class{datetime} methods you
753use. The \module{datetime} module does not supply any concrete
754subclasses of \class{tzinfo}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000755
Fred Drakebbdb2502002-12-23 18:58:06 +0000756An instance of (a concrete subclass of) \class{tzinfo} can be passed
757to the constructors for \class{datetimetz} and \class{timetz} objects.
758The latter objects view their fields as being in local time, and the
759\class{tzinfo} object supports methods revealing offset of local time
760from UTC, the name of the time zone, and DST offset, all relative to a
761date or time object passed to them.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000762
Tim Peters2483b612002-12-24 16:30:58 +0000763Special requirement for pickling: A tzinfo subclass must have an
764\method{__init__} method that can be called with no arguments, else it
765can be pickled but possibly not unpickled again. This is a technical
766requirement that may be relaxed in the future.
767
Fred Drakebbdb2502002-12-23 18:58:06 +0000768A concrete subclass of \class{tzinfo} may need to implement the
769following methods. Exactly which methods are needed depends on the
Tim Peters2483b612002-12-24 16:30:58 +0000770uses made of aware \module{datetime} objects; if in doubt, simply
Fred Drakebbdb2502002-12-23 18:58:06 +0000771implement all of them. The methods are called by a \class{datetimetz}
772or \class{timetz} object, passing itself as the argument. A
773\class{tzinfo} subclass's methods should be prepared to accept a dt
774argument of \code{None} or of type \class{timetz} or
Tim Peters52d13482002-12-24 16:34:13 +0000775\class{datetimetz}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000776
777 - utcoffset(dt)
778 Return offset of local time from UTC, in minutes east of UTC. If
779 local time is west of UTC, this should be negative. Note that this
780 is intended to be the total offset from UTC; for example, if a
781 \class{tzinfo} object represents both time zone and DST adjustments,
Fred Drakebbdb2502002-12-23 18:58:06 +0000782 \method{utcoffset()} should return their sum. If the UTC offset
783 isn't known, return \code{None}. Else the value returned must be
784 an integer, in the range -1439 to 1439 inclusive (1440 = 24*60;
Tim Peters1cff9fc2002-12-24 16:25:29 +0000785 the magnitude of the offset must be less than one day), or a
786 \class{timedelta} object representing a whole number of minutes
787 in the same range.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000788
789 - tzname(dt)
790 Return the timezone name corresponding to the \class{datetime} represented
791 by dt, as a string. Nothing about string names is defined by the
792 \module{datetime} module, and there's no requirement that it mean anything
793 in particular. For example, "GMT", "UTC", "-500", "-5:00", "EDT",
794 "US/Eastern", "America/New York" are all valid replies. Return
Fred Drakebbdb2502002-12-23 18:58:06 +0000795 \code{None} if a string name isn't known. Note that this is a method
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000796 rather than a fixed string primarily because some \class{tzinfo} objects
797 will wish to return different names depending on the specific value
798 of dt passed, especially if the \class{tzinfo} class is accounting for DST.
799
800 - dst(dt)
Fred Drakebbdb2502002-12-23 18:58:06 +0000801 Return the DST offset, in minutes east of UTC, or \code{None} if
802 DST information isn't known. Return 0 if DST is not in effect.
Tim Peters1cff9fc2002-12-24 16:25:29 +0000803 If DST is in effect, return the offset as an integer or
804 \class{timedelta} object (see \method{utcoffset()} for details).
805 Note that DST offset, if applicable, has
Fred Drakebbdb2502002-12-23 18:58:06 +0000806 already been added to the UTC offset returned by
807 \method{utcoffset()}, so there's no need to consult \method{dst()}
808 unless you're interested in displaying DST info separately. For
Tim Peters1cff9fc2002-12-24 16:25:29 +0000809 example, \method{datetimetz.timetuple()} calls its \member{tzinfo}
810 member's \method{dst()} method to determine how the
Fred Drakebbdb2502002-12-23 18:58:06 +0000811 \member{tm_isdst} flag should be set.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000812
813Example \class{tzinfo} classes:
814
Fred Drakebbdb2502002-12-23 18:58:06 +0000815\verbatiminput{tzinfo-examples.py}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000816
817
818\subsection{\class{timetz} \label{datetime-timetz}}
819
820A time object represents a (local) time of day, independent of any
821particular day, and subject to adjustment via a \class{tzinfo} object.
822
823Constructor:
824
825 time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
826
Fred Drakebbdb2502002-12-23 18:58:06 +0000827 All arguments are optional. \var{tzinfo} may be \code{None}, or
828 an instance of a \class{tzinfo} subclass. The remaining arguments
829 may be ints or longs, in the following ranges:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000830
831 0 <= hour < 24
832 0 <= minute < 60
833 0 <= second < 60
834 0 <= microsecond < 1000000
835
Fred Drakebbdb2502002-12-23 18:58:06 +0000836 If an argument outside those ranges is given,
837 \exception{ValueError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000838
839Class attributes:
840
841 .min
842 The earliest representable time, timetz(0, 0, 0, 0).
843
844 .max
845 The latest representable time, timetz(23, 59, 59, 999999).
846
847 .resolution
848 The smallest possible difference between non-equal timetz
849 objects, timedelta(microseconds=1), although note that
850 arithmetic on \class{timetz} objects is not supported.
851
852Instance attributes (read-only):
853
854 .hour in range(24)
855 .minute in range(60)
856 .second in range(60)
857 .microsecond in range(1000000)
858 .tzinfo the object passed as the tzinfo argument to the
Fred Drakebbdb2502002-12-23 18:58:06 +0000859 \class{timetz} constructor, or \code{None} if none
860 was passed.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000861
862Supported operations:
863
Fred Drakebbdb2502002-12-23 18:58:06 +0000864\begin{itemize}
865 \item
866 comparison of \class{timetz} to timetz, where timetz1 is considered
867 less than timetz2 when timetz1 precedes timetz2 in time, and
868 where the \class{timetz} objects are first adjusted by subtracting
869 their UTC offsets (obtained from \method{utcoffset()}).
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000870
Fred Drakebbdb2502002-12-23 18:58:06 +0000871 \item
872 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000873
Fred Drakebbdb2502002-12-23 18:58:06 +0000874 \item
875 pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000876
Fred Drakebbdb2502002-12-23 18:58:06 +0000877 \item
878 in Boolean contexts, a \class{timetz} object is considered to be
879 true if and only if, after converting it to minutes and
880 subtracting \method{utcoffset()} (or \code{0} if that's
881 \code{None}), the result is non-zero.
882\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000883
884Instance methods:
885
Tim Peters12bf3392002-12-24 05:41:27 +0000886 - replace(hour=, minute=, second=, microsecond=, tzinfo=)
887 Return a timetz with the same value, except for those fields given
888 new values by whichever keyword arguments are specified. Note that
889 \code{tzinfo=None} can be specified to create a naive timetz from an
890 aware timetz.
891
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000892 - isoformat()
893 Return a string representing the time in ISO 8601 format,
894 HH:MM:SS.mmmmmm
895 or, if self.microsecond is 0
896 HH:MM:SS
Fred Drakebbdb2502002-12-23 18:58:06 +0000897 If \method{utcoffset()} does not return \code{None}, a 6-character
898 string is appended, giving the UTC offset in (signed) hours and
899 minutes:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000900 HH:MM:SS.mmmmmm+HH:MM
901 or, if self.microsecond is 0
902 HH:MM:SS+HH:MM
903
904 - __str__()
Fred Drakebbdb2502002-12-23 18:58:06 +0000905 For a \class{timetz} \var{t}, \code{str(\var{t})} is equivalent to
906 \code{\var{t}.isoformat()}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000907
908 - strftime(format)
909 Return a string representing the time, controlled by an explicit
Fred Drakebbdb2502002-12-23 18:58:06 +0000910 format string. See the section on \method{strftime()} behavior.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000911
912 - utcoffset()
Fred Drakebbdb2502002-12-23 18:58:06 +0000913 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Peters1cff9fc2002-12-24 16:25:29 +0000914 \code{tzinfo.utcoffset(self)} converted to a \class{timedelta}
915 object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000916
917 - tzname():
Fred Drakebbdb2502002-12-23 18:58:06 +0000918 If \member{tzinfo} is \code{None}, returns \code{None}, else
919 \code{tzinfo.tzname(self)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000920
921 - dst()
Fred Drakebbdb2502002-12-23 18:58:06 +0000922 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Peters1cff9fc2002-12-24 16:25:29 +0000923 \code{tzinfo.dst(self)} converted to a \class{timedelta} object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000924
925
926
927\subsection{ \class{datetimetz} \label{datetime-datetimetz}}
928
Fred Drakebbdb2502002-12-23 18:58:06 +0000929\begin{notice}[warning]
930 I think this is \emph{still} missing some methods from the
931 Python implementation.
932\end{notice}
933
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000934A \class{datetimetz} object is a single object containing all the information
935from a date object and a \class{timetz} object.
936
937Constructor:
938
939 datetimetz(year, month, day,
940 hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
941
Fred Drakebbdb2502002-12-23 18:58:06 +0000942 The year, month and day arguments are required. \var{tzinfo} may
943 be \code{None}, or an instance of a \class{tzinfo} subclass. The
944 remaining arguments may be ints or longs, in the following ranges:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000945
946 MINYEAR <= year <= MAXYEAR
947 1 <= month <= 12
948 1 <= day <= number of days in the given month and year
949 0 <= hour < 24
950 0 <= minute < 60
951 0 <= second < 60
952 0 <= microsecond < 1000000
953
Fred Drakebbdb2502002-12-23 18:58:06 +0000954 If an argument outside those ranges is given,
955 \exception{ValueError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000956
957Other constructors (class methods):
958
959 - today()
960 utcnow()
961 utcfromtimestamp(timestamp)
962 fromordinal(ordinal)
963
Fred Drakebbdb2502002-12-23 18:58:06 +0000964 These are the same as the \class{datetime} class methods of the
965 same names, except that they construct a \class{datetimetz}
966 object, with tzinfo \code{None}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000967
968 - now([tzinfo=None])
969 fromtimestamp(timestamp[, tzinfo=None])
970
971 These are the same as the \class{datetime} class methods of the same names,
972 except that they accept an additional, optional tzinfo argument, and
973 construct a \class{datetimetz} object with that \class{tzinfo} object attached.
974
975 - combine(date, time)
Fred Drakebbdb2502002-12-23 18:58:06 +0000976 This is the same as \method{datetime.combine()}, except that it constructs
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000977 a \class{datetimetz} object, and, if the time object is of type timetz,
978 the \class{datetimetz} object has the same \class{tzinfo} object as the time object.
979
980Class attributes:
981
982 .min
983 The earliest representable datetimetz,
984 datetimetz(MINYEAR, 1, 1).
985
986 .max
987 The latest representable datetime,
988 datetimetz(MAXYEAR, 12, 31, 23, 59, 59, 999999).
989
990 .resolution
991 The smallest possible difference between non-equal datetimetz
992 objects, timedelta(microseconds=1).
993
994Instance attributes (read-only):
995
996 .year between MINYEAR and MAXYEAR inclusive
997 .month between 1 and 12 inclusive
998 .day between 1 and the number of days in the given month
999 of the given year
1000 .hour in range(24)
1001 .minute in range(60)
1002 .second in range(60)
1003 .microsecond in range(1000000)
Fred Drakebbdb2502002-12-23 18:58:06 +00001004 .tzinfo the object passed as the \var{tzinfo} argument to
1005 the \class{datetimetz} constructor, or \code{None}
1006 if none was passed.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001007
1008Supported operations:
1009
Fred Drakebbdb2502002-12-23 18:58:06 +00001010\begin{itemize}
1011 \item
1012 datetimetz1 + timedelta -> datetimetz2
1013 timedelta + datetimetz1 -> datetimetz2
1014 The same as addition of \class{datetime} objects, except that
1015 datetimetz2.tzinfo is set to datetimetz1.tzinfo.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001016
Fred Drakebbdb2502002-12-23 18:58:06 +00001017 \item
1018 datetimetz1 - timedelta -> datetimetz2
1019 The same as addition of \class{datetime} objects, except that
1020 datetimetz2.tzinfo is set to datetimetz1.tzinfo.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001021
Fred Drakebbdb2502002-12-23 18:58:06 +00001022 \item
1023 aware_datetimetz1 - aware_datetimetz2 -> timedelta
1024 \naive\_datetimetz1 - \naive\_datetimetz2 -> timedelta
1025 \naive\_datetimetz1 - datetime2 -> timedelta
1026 datetime1 - \naive\_datetimetz2 -> timedelta
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001027
Fred Drakebbdb2502002-12-23 18:58:06 +00001028 \item
1029 Subtraction of a \class{datetime} or datetimetz, from a
1030 \class{datetime} or \class{datetimetz}, is defined only if both
1031 operands are \naive, or if both are aware. If one is aware and
1032 the other is \naive, \exception{TypeError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001033
Fred Drakebbdb2502002-12-23 18:58:06 +00001034 \item
1035 If both are \naive, subtraction acts as for \class{datetime}
1036 subtraction.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001037
Fred Drakebbdb2502002-12-23 18:58:06 +00001038 \item
1039 If both are aware \class{datetimetz} objects, a-b acts as if a and b were
Tim Peters1cff9fc2002-12-24 16:25:29 +00001040 first converted to UTC datetimes (by subtracting \code{a.utcoffset()}
1041 minutes from a, and \code{b.utcoffset()} minutes from b), and then doing
Fred Drakebbdb2502002-12-23 18:58:06 +00001042 \class{datetime} subtraction, except that the implementation never
1043 overflows.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001044
Fred Drakebbdb2502002-12-23 18:58:06 +00001045 \item
1046 Comparison of \class{datetimetz} to \class{datetime} or datetimetz. As for
1047 subtraction, comparison is defined only if both operands are
1048 \naive\ or both are aware. If both are \naive, comparison is as
1049 for \class{datetime} objects with the same date and time components.
1050 If both are aware, comparison acts as if both were converted to
1051 UTC datetimes first, except the the implementation never
1052 overflows. If one comparand is \naive\ and the other aware,
1053 \exception{TypeError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001054
Fred Drakebbdb2502002-12-23 18:58:06 +00001055 \item
1056 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001057
Fred Drakebbdb2502002-12-23 18:58:06 +00001058 \item
1059 efficient pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001060
Fred Drakebbdb2502002-12-23 18:58:06 +00001061 \item
1062 in Boolean contexts, all \class{datetimetz} objects are considered to be
1063 true
1064\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001065
1066Instance methods:
1067
1068 - date()
1069 time()
1070 toordinal()
1071 weekday()
1072 isoweekday()
1073 isocalendar()
1074 ctime()
1075 __str__()
1076 strftime(format)
1077
1078 These are the same as the \class{datetime} methods of the same names.
1079
1080 - timetz()
1081 Return \class{timetz} object with same hour, minute, second, microsecond,
1082 and tzinfo.
1083
Tim Peters12bf3392002-12-24 05:41:27 +00001084 - replace(year=, month=, day=, hour=, minute=, second=, microsecond=,
1085 tzinfo=)
1086 Return a datetimetz with the same value, except for those fields given
1087 new values by whichever keyword arguments are specified. Note that
1088 \code{tzinfo=None} can be specified to create a naive datetimetz from
1089 an aware datetimetz.
1090
Tim Peters80475bb2002-12-25 07:40:55 +00001091 - astimezone(tz)
1092 Return a \class{datetimetz} with new tzinfo member \var{tz}. \var{tz}
1093 must be an instance of a \class{tzinfo} subclass. If self is naive, or
1094 if \code(tz.utcoffset(self)} returns \code{None},
1095 \code{self.astimezone(tz)} is equivalent to
1096 \code{self.replace(tzinfo=tz)}: a new timezone object is attached
1097 without any conversion of date or time fields. If self is aware and
1098 \code{tz.utcoffset(self)} does not return \code{None}, the date and
1099 time fields are adjusted so that the result is local time in timezone
1100 tz, representing the same UTC time as self. \code{self.astimezone(tz)}
1101 is then equivalent to
1102 \begin{verbatim}
1103 (self - (self.utcoffset() - tz.utcoffset(self)).replace(tzinfo=tz)
1104 \end{verbatim}
1105 where the result of \code{tz.uctcoffset(self)} is converted to a
1106 \class{timedelta} if it's an integer.
1107
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001108 - utcoffset()
Fred Drakebbdb2502002-12-23 18:58:06 +00001109 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Peters1cff9fc2002-12-24 16:25:29 +00001110 \code{tzinfo.utcoffset(self)} converted to a \class{timedelta}
1111 object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001112
Tim Peters12bf3392002-12-24 05:41:27 +00001113 - tzname()
Fred Drakebbdb2502002-12-23 18:58:06 +00001114 If \member{tzinfo} is \code{None}, returns \code{None}, else
1115 \code{tzinfo.tzname(self)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001116
1117 - dst()
Fred Drakebbdb2502002-12-23 18:58:06 +00001118 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Peters1cff9fc2002-12-24 16:25:29 +00001119 \code{tzinfo.dst(self)} converted to a \class{timedelta}
1120 object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001121
1122 - timetuple()
Fred Drakebbdb2502002-12-23 18:58:06 +00001123 Like \function{datetime.timetuple()}, but sets the
1124 \member{tm_isdst} flag according to the \method{dst()} method: if
1125 \method{dst()} returns \code{None}, \member{tm_isdst} is set to
1126 \code{-1}; else if \method{dst()} returns a non-zero value,
1127 \member{tm_isdst} is set to \code{1}; else \code{tm_isdst} is set
1128 to \code{0}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001129
1130 - utctimetuple()
Fred Drakebbdb2502002-12-23 18:58:06 +00001131 If \class{datetimetz} instance \var{d} is \naive, this is the same as
1132 \code{\var{d}.timetuple()} except that \member{tm_isdst} is forced to 0
1133 regardless of what \code{d.dst()} returns. DST is never in effect
1134 for a UTC time.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001135
Fred Drakebbdb2502002-12-23 18:58:06 +00001136 If \var{d} is aware, \var{d} is normalized to UTC time, by subtracting
1137 \code{\var{d}.utcoffset()} minutes, and a timetuple for the
1138 normalized time is returned. \member{tm_isdst} is forced to 0.
1139 Note that the result's \member{tm_year} field may be
1140 \constant{MINYEAR}-1 or \constant{MAXYEAR}+1, if \var{d}.year was
1141 \code{MINYEAR} or \code{MAXYEAR} and UTC adjustment spills over a
1142 year boundary.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001143
1144 - isoformat(sep='T')
1145 Return a string representing the date and time in ISO 8601 format,
1146 YYYY-MM-DDTHH:MM:SS.mmmmmm
Fred Drakebbdb2502002-12-23 18:58:06 +00001147 or, if \member{microsecond} is 0,
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001148 YYYY-MM-DDTHH:MM:SS
1149
Fred Drakebbdb2502002-12-23 18:58:06 +00001150 If \method{utcoffset()} does not return \code{None}, a 6-character
1151 string is appended, giving the UTC offset in (signed) hours and
1152 minutes:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001153 YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM
Fred Drakebbdb2502002-12-23 18:58:06 +00001154 or, if \member{microsecond} is 0
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001155 YYYY-MM-DDTHH:MM:SS+HH:MM
1156
Fred Drakebbdb2502002-12-23 18:58:06 +00001157 The optional argument \var{sep} (default \code{'T'}) is a
1158 one-character separator, placed between the date and time portions
1159 of the result. For example,
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001160
Fred Drakebbdb2502002-12-23 18:58:06 +00001161\begin{verbatim}
1162>>> from datetime import *
1163>>> class TZ(tzinfo):
1164... def utcoffset(self, dt): return -399
1165...
1166>>> datetimetz(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
1167'2002-12-25 00:00:00-06:39'
1168\end{verbatim}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001169
Fred Drakebbdb2502002-12-23 18:58:06 +00001170\code{str(\var{d})} is equivalent to \code{\var{d}.isoformat(' ')}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001171
1172
Tim Peters29fb9c72002-12-23 22:21:52 +00001173\subsection{\method{strftime()} Behavior}
1174
1175\class{date}, \class{datetime}, \class{datetimetz}, \class{time},
1176and \class{timetz} objects all support a \code{strftime(\var{format})}
1177method, to create a string representing the time under the control of
1178an explicit format string. Broadly speaking,
1179\begin{verbatim}
1180d.strftime(fmt)
1181\end{verbatim}
1182acts like the \refmodule{time} module's
1183\begin{verbatim}
1184time.strftime(fmt, d.timetuple())
1185\end{verbatim}
1186although not all objects support a \method{timetuple()} method.
1187
1188For \class{time} and \class{timetz} objects, format codes for year,
1189month, and day should not be used, as time objects have no such values.
1190\code{1900} is used for the year, and \code{0} for the month and day.
1191
1192For \class{date} objects, format codes for hours, minutes, and seconds
1193should not be used, as date objects have no such values. \code{0} is
1194used instead.
1195
1196For a \naive\ object, the \code{\%z} and \code{\%Z} format codes are
1197replaced by empty strings.
1198
1199For an aware object:
1200
1201\begin{itemize}
1202 \item[\code{\%z}]
1203 \method{utcoffset()} is transformed into a 5-character string of
1204 the form +HHMM or -HHMM, where HH is a 2-digit string giving the
1205 number of UTC offset hours, and MM is a 2-digit string giving the
1206 number of UTC offset minutes. For example, if
Tim Peters1cff9fc2002-12-24 16:25:29 +00001207 \method{utcoffset()} returns \code{timedelta(hours=-3, minutes=-30}},
1208 \code{\%z} is replaced with the string \code{'-0330'}.
Tim Peters29fb9c72002-12-23 22:21:52 +00001209
1210 \item[\code{\%Z}]
1211 If \method{tzname()} returns \code{None}, \code{\%Z} is replaced
1212 by an empty string. Else \code{\%Z} is replaced by the returned
1213 value, which must be a string.
1214\end{itemize}
1215
1216The full set of format codes supported varies across platforms,
1217because Python calls the platform C library's \function{strftime()}
1218function, and platform variations are common. The documentation for
1219Python's \refmodule{time} module lists the format codes that the C
1220standard (1989 version) requires, and those work on all platforms
1221with a standard C implementation. Note that the 1999 version of the
1222C standard added additional format codes.
1223
1224The exact range of years for which \method{strftime()} works also
1225varies across platforms. Regardless of platform, years before 1900
1226cannot be used.
1227
1228
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001229\subsection{C API}
1230
1231Struct typedefs:
1232
1233 PyDateTime_Date
1234 PyDateTime_DateTime
1235 PyDateTime_DateTimeTZ
1236 PyDateTime_Time
1237 PyDateTime_TimeTZ
1238 PyDateTime_Delta
1239 PyDateTime_TZInfo
1240
1241Type-check macros:
1242
1243 PyDate_Check(op)
1244 PyDate_CheckExact(op)
1245
1246 PyDateTime_Check(op)
1247 PyDateTime_CheckExact(op)
1248
1249 PyDateTimeTZ_Check(op)
1250 PyDateTimeTZ_CheckExact(op)
1251
1252 PyTime_Check(op)
1253 PyTime_CheckExact(op)
1254
1255 PyTimeTZ_Check(op)
1256 PyTimeTZ_CheckExact(op)
1257
1258 PyDelta_Check(op)
1259 PyDelta_CheckExact(op)
1260
1261 PyTZInfo_Check(op)
1262 PyTZInfo_CheckExact(op
1263
1264Accessor macros:
1265
1266All objects are immutable, so accessors are read-only. All macros
1267return ints:
1268
Tim Peters1cff9fc2002-12-24 16:25:29 +00001269 For \class{date}, \class{datetime}, and \class{datetimetz} instances:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001270 PyDateTime_GET_YEAR(o)
1271 PyDateTime_GET_MONTH(o)
1272 PyDateTime_GET_DAY(o)
1273
1274 For \class{datetime} and \class{datetimetz} instances:
1275 PyDateTime_DATE_GET_HOUR(o)
1276 PyDateTime_DATE_GET_MINUTE(o)
1277 PyDateTime_DATE_GET_SECOND(o)
1278 PyDateTime_DATE_GET_MICROSECOND(o)
1279
Tim Peters1cff9fc2002-12-24 16:25:29 +00001280 For \class{time} and \class{timetz} instances:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001281 PyDateTime_TIME_GET_HOUR(o)
1282 PyDateTime_TIME_GET_MINUTE(o)
1283 PyDateTime_TIME_GET_SECOND(o)
1284 PyDateTime_TIME_GET_MICROSECOND(o)