blob: 4bba553ee7b91599991cd3778956d94e6abe08bb [file] [log] [blame]
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +00001% XXX what order should the types be discussed in?
Tim Petersbad8ff02002-12-30 20:52:32 +00002
Fred Drakebbdb2502002-12-23 18:58:06 +00003\section{\module{datetime} ---
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00004 Basic date and time types}
5
6\declaremodule{builtin}{datetime}
7\modulesynopsis{Basic date and time types.}
Fred Drakebbdb2502002-12-23 18:58:06 +00008\moduleauthor{Tim Peters}{tim@zope.com}
9\sectionauthor{Tim Peters}{tim@zope.com}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000010\sectionauthor{A.M. Kuchling}{amk@amk.ca}
Raymond Hettinger6005a342002-12-30 20:01:24 +000011
12\versionadded{2.3}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000013
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000014
15The \module{datetime} module supplies classes for manipulating dates
16and times in both simple and complex ways. While date and time
17arithmetic is supported, the focus of the implementation is on
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000018efficient member extraction for output formatting and manipulation.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000019
Fred Drakea37e5cc2002-12-30 21:26:42 +000020There are two kinds of date and time objects: ``naive'' and ``aware''.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000021This distinction refers to whether the object has any notion of time
Tim Peters00372022003-01-09 04:10:05 +000022zone, daylight saving time, or other kind of algorithmic or political
23time adjustment. Whether a naive \class{datetime} object represents
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000024Coordinated Universal Time (UTC), local time, or time in some other
25timezone is purely up to the program, just like it's up to the program
Fred Drakeb184ae82005-01-19 03:39:17 +000026whether a particular number represents metres, miles, or mass. Naive
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000027\class{datetime} objects are easy to understand and to work with, at
28the cost of ignoring some aspects of reality.
29
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000030For applications requiring more, \class{datetime} and \class{time}
31objects have an optional time zone information member,
Tim Peters327098a2003-01-20 22:54:38 +000032\member{tzinfo}, that can contain an instance of a subclass of
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000033the abstract \class{tzinfo} class. These \class{tzinfo} objects
34capture information about the offset from UTC time, the time zone
35name, and whether Daylight Saving Time is in effect. Note that no
36concrete \class{tzinfo} classes are supplied by the \module{datetime}
Andrew M. Kuchling570e3582003-02-05 21:15:38 +000037module. Supporting timezones at whatever level of detail is required
38is up to the application. The rules for time adjustment across the
39world are more political than rational, and there is no standard
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000040suitable for every application.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000041
42The \module{datetime} module exports the following constants:
43
44\begin{datadesc}{MINYEAR}
Tim Peters00372022003-01-09 04:10:05 +000045 The smallest year number allowed in a \class{date} or
46 \class{datetime} object. \constant{MINYEAR}
Fred Drakebbdb2502002-12-23 18:58:06 +000047 is \code{1}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000048\end{datadesc}
49
50\begin{datadesc}{MAXYEAR}
Tim Peters00372022003-01-09 04:10:05 +000051 The largest year number allowed in a \class{date} or \class{datetime}
52 object. \constant{MAXYEAR} is \code{9999}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000053\end{datadesc}
54
Raymond Hettinger6005a342002-12-30 20:01:24 +000055\begin{seealso}
Raymond Hettinger62229582002-12-31 16:37:03 +000056 \seemodule{calendar}{General calendar related functions.}
Raymond Hettinger6005a342002-12-30 20:01:24 +000057 \seemodule{time}{Time access and conversions.}
58\end{seealso}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000059
60\subsection{Available Types}
61
Fred Drakebbdb2502002-12-23 18:58:06 +000062\begin{classdesc*}{date}
Fred Drakea37e5cc2002-12-30 21:26:42 +000063 An idealized naive date, assuming the current Gregorian calendar
Fred Drakebbdb2502002-12-23 18:58:06 +000064 always was, and always will be, in effect.
65 Attributes: \member{year}, \member{month}, and \member{day}.
66\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000067
Fred Drakebbdb2502002-12-23 18:58:06 +000068\begin{classdesc*}{time}
Tim Peters00372022003-01-09 04:10:05 +000069 An idealized time, independent of any particular day, assuming
Fred Drakebbdb2502002-12-23 18:58:06 +000070 that every day has exactly 24*60*60 seconds (there is no notion
71 of "leap seconds" here).
Tim Peters00372022003-01-09 04:10:05 +000072 Attributes: \member{hour}, \member{minute}, \member{second},
73 \member{microsecond}, and \member{tzinfo}.
Fred Drakebbdb2502002-12-23 18:58:06 +000074\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000075
Fred Drakebbdb2502002-12-23 18:58:06 +000076\begin{classdesc*}{datetime}
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000077 A combination of a date and a time.
Fred Drakebbdb2502002-12-23 18:58:06 +000078 Attributes: \member{year}, \member{month}, \member{day},
79 \member{hour}, \member{minute}, \member{second},
Tim Peters00372022003-01-09 04:10:05 +000080 \member{microsecond}, and \member{tzinfo}.
Fred Drakebbdb2502002-12-23 18:58:06 +000081\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000082
Fred Drakebbdb2502002-12-23 18:58:06 +000083\begin{classdesc*}{timedelta}
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000084 A duration expressing the difference between two \class{date},
85 \class{time}, or \class{datetime} instances to microsecond
Fred Drakebbdb2502002-12-23 18:58:06 +000086 resolution.
87\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000088
Fred Drakebbdb2502002-12-23 18:58:06 +000089\begin{classdesc*}{tzinfo}
90 An abstract base class for time zone information objects. These
Tim Peters00372022003-01-09 04:10:05 +000091 are used by the \class{datetime} and \class{time} classes to
Andrew M. Kuchling9b445712003-01-09 13:46:30 +000092 provide a customizable notion of time adjustment (for example, to
Tim Peters00372022003-01-09 04:10:05 +000093 account for time zone and/or daylight saving time).
Fred Drakebbdb2502002-12-23 18:58:06 +000094\end{classdesc*}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000095
96Objects of these types are immutable.
97
Tim Peters00372022003-01-09 04:10:05 +000098Objects of the \class{date} type are always naive.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +000099
Tim Peters00372022003-01-09 04:10:05 +0000100An object \var{d} of type \class{time} or \class{datetime} may be
Fred Drakea37e5cc2002-12-30 21:26:42 +0000101naive or aware. \var{d} is aware if \code{\var{d}.tzinfo} is not
Andrew M. Kuchling9b445712003-01-09 13:46:30 +0000102\code{None} and \code{\var{d}.tzinfo.utcoffset(\var{d})} does not return
Fred Drakea37e5cc2002-12-30 21:26:42 +0000103\code{None}. If \code{\var{d}.tzinfo} is \code{None}, or if
104\code{\var{d}.tzinfo} is not \code{None} but
105\code{\var{d}.tzinfo.utcoffset(\var{d})} returns \code{None}, \var{d}
106is naive.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000107
Fred Drakea37e5cc2002-12-30 21:26:42 +0000108The distinction between naive and aware doesn't apply to
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000109\class{timedelta} objects.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000110
Fred Drakebbdb2502002-12-23 18:58:06 +0000111Subclass relationships:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000112
Fred Drakebbdb2502002-12-23 18:58:06 +0000113\begin{verbatim}
114object
115 timedelta
116 tzinfo
117 time
Fred Drakebbdb2502002-12-23 18:58:06 +0000118 date
119 datetime
Fred Drakebbdb2502002-12-23 18:58:06 +0000120\end{verbatim}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000121
Raymond Hettinger6005a342002-12-30 20:01:24 +0000122\subsection{\class{timedelta} Objects \label{datetime-timedelta}}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000123
Fred Drakebbdb2502002-12-23 18:58:06 +0000124A \class{timedelta} object represents a duration, the difference
125between two dates or times.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000126
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000127\begin{classdesc}{timedelta}{\optional{days\optional{, seconds\optional{,
128 microseconds\optional{, milliseconds\optional{,
129 minutes\optional{, hours\optional{, weeks}}}}}}}}
130 All arguments are optional and default to \code{0}. Arguments may
131 be ints, longs, or floats, and may be positive or negative.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000132
Fred Drake436eadd2002-12-31 18:13:11 +0000133 Only \var{days}, \var{seconds} and \var{microseconds} are stored
134 internally. Arguments are converted to those units:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000135
Andrew M. Kuchling9b445712003-01-09 13:46:30 +0000136\begin{itemize}
137 \item A millisecond is converted to 1000 microseconds.
138 \item A minute is converted to 60 seconds.
139 \item An hour is converted to 3600 seconds.
140 \item A week is converted to 7 days.
141\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000142
Fred Drake436eadd2002-12-31 18:13:11 +0000143 and days, seconds and microseconds are then normalized so that the
144 representation is unique, with
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000145
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000146\begin{itemize}
147 \item \code{0 <= \var{microseconds} < 1000000}
148 \item \code{0 <= \var{seconds} < 3600*24} (the number of seconds in one day)
149 \item \code{-999999999 <= \var{days} <= 999999999}
150\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000151
Andrew M. Kuchling9b445712003-01-09 13:46:30 +0000152 If any argument is a float and there are fractional microseconds,
Fred Drake436eadd2002-12-31 18:13:11 +0000153 the fractional microseconds left over from all arguments are combined
154 and their sum is rounded to the nearest microsecond. If no
155 argument is a float, the conversion and normalization processes
156 are exact (no information is lost).
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000157
Fred Drake436eadd2002-12-31 18:13:11 +0000158 If the normalized value of days lies outside the indicated range,
159 \exception{OverflowError} is raised.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000160
Fred Drake436eadd2002-12-31 18:13:11 +0000161 Note that normalization of negative values may be surprising at first.
162 For example,
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000163
Fred Drakebbdb2502002-12-23 18:58:06 +0000164\begin{verbatim}
165>>> d = timedelta(microseconds=-1)
166>>> (d.days, d.seconds, d.microseconds)
167(-1, 86399, 999999)
168\end{verbatim}
Fred Drake0f8e5432002-12-31 18:31:48 +0000169\end{classdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000170
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000171Class attributes are:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000172
Fred Drake0f8e5432002-12-31 18:31:48 +0000173\begin{memberdesc}{min}
174 The most negative \class{timedelta} object,
175 \code{timedelta(-999999999)}.
176\end{memberdesc}
177
178\begin{memberdesc}{max}
179 The most positive \class{timedelta} object,
180 \code{timedelta(days=999999999, hours=23, minutes=59, seconds=59,
181 microseconds=999999)}.
182\end{memberdesc}
183
184\begin{memberdesc}{resolution}
185 The smallest possible difference between non-equal
186 \class{timedelta} objects, \code{timedelta(microseconds=1)}.
187\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000188
Fred Drakea37e5cc2002-12-30 21:26:42 +0000189Note that, because of normalization, \code{timedelta.max} \textgreater
190\code{-timedelta.min}. \code{-timedelta.max} is not representable as
191a \class{timedelta} object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000192
193Instance attributes (read-only):
194
Raymond Hettinger6005a342002-12-30 20:01:24 +0000195\begin{tableii}{c|l}{code}{Attribute}{Value}
196 \lineii{days}{Between -999999999 and 999999999 inclusive}
197 \lineii{seconds}{Between 0 and 86399 inclusive}
198 \lineii{microseconds}{Between 0 and 999999 inclusive}
199\end{tableii}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000200
201Supported operations:
202
Andrew M. Kuchling9b445712003-01-09 13:46:30 +0000203% XXX this table is too wide!
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000204\begin{tableii}{c|l}{code}{Operation}{Result}
205 \lineii{\var{t1} = \var{t2} + \var{t3}}
Tim Peters95322982002-12-31 16:01:47 +0000206 {Sum of \var{t2} and \var{t3}.
Fred Drake9bdeee42002-12-30 20:35:32 +0000207 Afterwards \var{t1}-\var{t2} == \var{t3} and \var{t1}-\var{t3}
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000208 == \var{t2} are true.
209 (1)}
210 \lineii{\var{t1} = \var{t2} - \var{t3}}
211 {Difference of \var{t2} and \var{t3}.
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000212 Afterwards \var{t1} == \var{t2} - \var{t3} and
213 \var{t2} == \var{t1} + \var{t3} are true.
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000214 (1)}
215 \lineii{\var{t1} = \var{t2} * \var{i} or \var{t1} = \var{i} * \var{t2}}
Fred Drake9bdeee42002-12-30 20:35:32 +0000216 {Delta multiplied by an integer or long.
Fred Drake436eadd2002-12-31 18:13:11 +0000217 Afterwards \var{t1} // i == \var{t2} is true,
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000218 provided \code{i != 0}.}
219 \lineii{}{In general, \var{t1} * i == \var{t1} * (i-1) + \var{t1} is true.
220 (1)}
221 \lineii{\var{t1} = \var{t2} // \var{i}}
222 {The floor is computed and the remainder (if any) is thrown away.
223 (3)}
224 \lineii{+\var{t1}}
225 {Returns a \class{timedelta} object with the same value.
226 (2)}
227 \lineii{-\var{t1}}
Raymond Hettingercbd6cd22002-12-31 16:30:49 +0000228 {equivalent to \class{timedelta}(-\var{t1.days}, -\var{t1.seconds},
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000229 -\var{t1.microseconds}), and to \var{t1}* -1.
230 (1)(4)}
231 \lineii{abs(\var{t})}
Fred Drake436eadd2002-12-31 18:13:11 +0000232 {equivalent to +\var{t} when \code{t.days >= 0}, and to
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000233 -\var{t} when \code{t.days < 0}.
234 (2)}
235\end{tableii}
Raymond Hettinger6005a342002-12-30 20:01:24 +0000236\noindent
237Notes:
238
239\begin{description}
240\item[(1)]
Fred Drake436eadd2002-12-31 18:13:11 +0000241 This is exact, but may overflow.
Raymond Hettinger6005a342002-12-30 20:01:24 +0000242
243\item[(2)]
Tim Peters397301e2003-01-02 21:28:08 +0000244 This is exact, and cannot overflow.
Raymond Hettingerc5f5f872002-12-31 14:26:54 +0000245
246\item[(3)]
Tim Peters397301e2003-01-02 21:28:08 +0000247 Division by 0 raises \exception{ZeroDivisionError}.
248
249\item[(4)]
Fred Drake436eadd2002-12-31 18:13:11 +0000250 -\var{timedelta.max} is not representable as a \class{timedelta} object.
Raymond Hettinger6005a342002-12-30 20:01:24 +0000251\end{description}
252
Raymond Hettingerc5f5f872002-12-31 14:26:54 +0000253In addition to the operations listed above \class{timedelta} objects
Tim Peters00372022003-01-09 04:10:05 +0000254support certain additions and subtractions with \class{date} and
255\class{datetime} objects (see below).
Raymond Hettinger6005a342002-12-30 20:01:24 +0000256
Raymond Hettingerc5f5f872002-12-31 14:26:54 +0000257Comparisons of \class{timedelta} objects are supported with the
258\class{timedelta} object representing the smaller duration considered
259to be the smaller timedelta.
Tim Peters07534a62003-02-07 22:50:28 +0000260In order to stop mixed-type comparisons from falling back to the
261default comparison by object address, when a \class{timedelta} object is
262compared to an object of a different type, \exception{TypeError} is
263raised unless the comparison is \code{==} or \code{!=}. The latter
264cases return \constant{False} or \constant{True}, respectively.
Raymond Hettinger6005a342002-12-30 20:01:24 +0000265
Andrew M. Kuchling9b445712003-01-09 13:46:30 +0000266\class{timedelta} objects are hashable (usable as dictionary keys),
Raymond Hettingerc5f5f872002-12-31 14:26:54 +0000267support efficient pickling, and in Boolean contexts, a \class{timedelta}
268object is considered to be true if and only if it isn't equal to
269\code{timedelta(0)}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000270
271
Raymond Hettinger6005a342002-12-30 20:01:24 +0000272\subsection{\class{date} Objects \label{datetime-date}}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000273
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000274A \class{date} object represents a date (year, month and day) in an idealized
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000275calendar, the current Gregorian calendar indefinitely extended in both
276directions. January 1 of year 1 is called day number 1, January 2 of year
2771 is called day number 2, and so on. This matches the definition of the
278"proleptic Gregorian" calendar in Dershowitz and Reingold's book
Fred Drakea37e5cc2002-12-30 21:26:42 +0000279\citetitle{Calendrical Calculations}, where it's the base calendar for all
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000280computations. See the book for algorithms for converting between
281proleptic Gregorian ordinals and many other calendar systems.
282
Fred Drake0f8e5432002-12-31 18:31:48 +0000283\begin{classdesc}{date}{year, month, day}
Fred Drake436eadd2002-12-31 18:13:11 +0000284 All arguments are required. Arguments may be ints or longs, in the
285 following ranges:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000286
Fred Drake436eadd2002-12-31 18:13:11 +0000287 \begin{itemize}
288 \item \code{MINYEAR <= \var{year} <= MAXYEAR}
289 \item \code{1 <= \var{month} <= 12}
290 \item \code{1 <= \var{day} <= number of days in the given month and year}
291 \end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000292
Fred Drake436eadd2002-12-31 18:13:11 +0000293 If an argument outside those ranges is given, \exception{ValueError}
294 is raised.
Fred Drake0f8e5432002-12-31 18:31:48 +0000295\end{classdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000296
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000297Other constructors, all class methods:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000298
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000299\begin{methoddesc}{today}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000300 Return the current local date. This is equivalent to
301 \code{date.fromtimestamp(time.time())}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000302\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000303
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000304\begin{methoddesc}{fromtimestamp}{timestamp}
Fred Drake436eadd2002-12-31 18:13:11 +0000305 Return the local date corresponding to the POSIX timestamp, such
306 as is returned by \function{time.time()}. This may raise
307 \exception{ValueError}, if the timestamp is out of the range of
308 values supported by the platform C \cfunction{localtime()}
309 function. It's common for this to be restricted to years from 1970
Tim Peters75a6e3b2003-01-04 18:17:36 +0000310 through 2038. Note that on non-POSIX systems that include leap
311 seconds in their notion of a timestamp, leap seconds are ignored by
312 \method{fromtimestamp()}.
Andrew M. Kuchling0f0e6b92003-01-09 12:51:50 +0000313\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000314
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000315\begin{methoddesc}{fromordinal}{ordinal}
Fred Drake436eadd2002-12-31 18:13:11 +0000316 Return the date corresponding to the proleptic Gregorian ordinal,
317 where January 1 of year 1 has ordinal 1. \exception{ValueError} is
318 raised unless \code{1 <= \var{ordinal} <= date.max.toordinal()}.
319 For any date \var{d}, \code{date.fromordinal(\var{d}.toordinal()) ==
320 \var{d}}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000321\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000322
323Class attributes:
324
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000325\begin{memberdesc}{min}
Fred Drake436eadd2002-12-31 18:13:11 +0000326 The earliest representable date, \code{date(MINYEAR, 1, 1)}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000327\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000328
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000329\begin{memberdesc}{max}
Fred Drake436eadd2002-12-31 18:13:11 +0000330 The latest representable date, \code{date(MAXYEAR, 12, 31)}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000331\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000332
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000333\begin{memberdesc}{resolution}
Fred Drake436eadd2002-12-31 18:13:11 +0000334 The smallest possible difference between non-equal date
335 objects, \code{timedelta(days=1)}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000336\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000337
338Instance attributes (read-only):
339
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000340\begin{memberdesc}{year}
Andrew M. Kuchling9b445712003-01-09 13:46:30 +0000341 Between \constant{MINYEAR} and \constant{MAXYEAR} inclusive.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000342\end{memberdesc}
343
344\begin{memberdesc}{month}
Fred Drake436eadd2002-12-31 18:13:11 +0000345 Between 1 and 12 inclusive.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000346\end{memberdesc}
347
348\begin{memberdesc}{day}
Fred Drake436eadd2002-12-31 18:13:11 +0000349 Between 1 and the number of days in the given month of the given
350 year.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000351\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000352
353Supported operations:
354
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000355\begin{tableii}{c|l}{code}{Operation}{Result}
356 \lineii{\var{date2} = \var{date1} + \var{timedelta}}
357 {\var{date2} is \code{\var{timedelta}.days} days removed from
358 \var{date1}. (1)}
Tim Peters00372022003-01-09 04:10:05 +0000359
Tim Peters00372022003-01-09 04:10:05 +0000360
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000361 \lineii{\var{date2} = \var{date1} - \var{timedelta}}
362 {Computes \var{date2} such that \code{\var{date2} + \var{timedelta}
363 == \var{date1}}. (2)}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000364
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000365 \lineii{\var{timedelta} = \var{date1} - \var{date2}}
366 {(3)}
Tim Peters00372022003-01-09 04:10:05 +0000367
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000368 \lineii{\var{date1} < \var{date2}}
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000369 {\var{date1} is considered less than \var{date2} when \var{date1}
370 precedes \var{date2} in time. (4)}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000371
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000372\end{tableii}
Tim Peters00372022003-01-09 04:10:05 +0000373
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000374Notes:
375\begin{description}
376
377\item[(1)]
378 \var{date2} is moved forward in time if \code{\var{timedelta}.days
379 > 0}, or backward if \code{\var{timedelta}.days < 0}. Afterward
380 \code{\var{date2} - \var{date1} == \var{timedelta}.days}.
381 \code{\var{timedelta}.seconds} and
382 \code{\var{timedelta}.microseconds} are ignored.
383 \exception{OverflowError} is raised if \code{\var{date2}.year}
384 would be smaller than \constant{MINYEAR} or larger than
385 \constant{MAXYEAR}.
386
387\item[(2)]
388 This isn't quite equivalent to date1 +
389 (-timedelta), because -timedelta in isolation can overflow in cases
390 where date1 - timedelta does not. \code{\var{timedelta}.seconds}
391 and \code{\var{timedelta}.microseconds} are ignored.
392
393\item[(3)]
394This is exact, and cannot overflow. timedelta.seconds and
Fred Drakebbdb2502002-12-23 18:58:06 +0000395 timedelta.microseconds are 0, and date2 + timedelta == date1
396 after.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000397
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000398\item[(4)]
399In other words, \code{date1 < date2}
400 if and only if \code{\var{date1}.toordinal() <
Tim Petersfdc58f22004-11-15 03:50:16 +0000401 \var{date2}.toordinal()}.
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000402In order to stop comparison from falling back to the default
403scheme of comparing object addresses, date comparison
404normally raises \exception{TypeError} if the other comparand
405isn't also a \class{date} object. However, \code{NotImplemented}
406is returned instead if the other comparand has a
407\method{timetuple} attribute. This hook gives other kinds of
408date objects a chance at implementing mixed-type comparison.
Tim Peters07534a62003-02-07 22:50:28 +0000409If not, when a \class{date} object is
410compared to an object of a different type, \exception{TypeError} is
411raised unless the comparison is \code{==} or \code{!=}. The latter
412cases return \constant{False} or \constant{True}, respectively.
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000413
414\end{description}
Tim Peters8d81a012003-01-24 22:36:34 +0000415
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000416
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000417Dates can be used as dictionary keys. In Boolean contexts, all
418\class{date} objects are considered to be true.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000419
420Instance methods:
421
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000422\begin{methoddesc}{replace}{year, month, day}
Tim Peters00372022003-01-09 04:10:05 +0000423 Return a date with the same value, except for those members given
Fred Drake436eadd2002-12-31 18:13:11 +0000424 new values by whichever keyword arguments are specified. For
425 example, if \code{d == date(2002, 12, 31)}, then
Tim Petersfdc58f22004-11-15 03:50:16 +0000426 \code{d.replace(day=26) == date(2002, 12, 26)}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000427\end{methoddesc}
Tim Peters12bf3392002-12-24 05:41:27 +0000428
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000429\begin{methoddesc}{timetuple}{}
Martin v. Löwisef365372003-09-04 18:29:53 +0000430 Return a \class{time.struct_time} such as returned by
Fred Drake436eadd2002-12-31 18:13:11 +0000431 \function{time.localtime()}. The hours, minutes and seconds are
432 0, and the DST flag is -1.
433 \code{\var{d}.timetuple()} is equivalent to
Martin v. Löwisef365372003-09-04 18:29:53 +0000434 \code{time.struct_time((\var{d}.year, \var{d}.month, \var{d}.day,
Tim Petersfdc58f22004-11-15 03:50:16 +0000435 0, 0, 0,
436 \var{d}.weekday(),
Fred Drake436eadd2002-12-31 18:13:11 +0000437 \var{d}.toordinal() - date(\var{d}.year, 1, 1).toordinal() + 1,
Martin v. Löwisef365372003-09-04 18:29:53 +0000438 -1))}
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000439\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000440
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000441\begin{methoddesc}{toordinal}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000442 Return the proleptic Gregorian ordinal of the date, where January 1
443 of year 1 has ordinal 1. For any \class{date} object \var{d},
444 \code{date.fromordinal(\var{d}.toordinal()) == \var{d}}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000445\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000446
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000447\begin{methoddesc}{weekday}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000448 Return the day of the week as an integer, where Monday is 0 and
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000449 Sunday is 6. For example, \code{date(2002, 12, 4).weekday() == 2}, a
Fred Drake436eadd2002-12-31 18:13:11 +0000450 Wednesday.
451 See also \method{isoweekday()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000452\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000453
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000454\begin{methoddesc}{isoweekday}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000455 Return the day of the week as an integer, where Monday is 1 and
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000456 Sunday is 7. For example, \code{date(2002, 12, 4).isoweekday() == 3}, a
Fred Drake436eadd2002-12-31 18:13:11 +0000457 Wednesday.
458 See also \method{weekday()}, \method{isocalendar()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000459\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000460
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000461\begin{methoddesc}{isocalendar}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000462 Return a 3-tuple, (ISO year, ISO week number, ISO weekday).
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000463
Fred Drake436eadd2002-12-31 18:13:11 +0000464 The ISO calendar is a widely used variant of the Gregorian calendar.
465 See \url{http://www.phys.uu.nl/~vgent/calendar/isocalendar.htm}
466 for a good explanation.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000467
Fred Drake436eadd2002-12-31 18:13:11 +0000468 The ISO year consists of 52 or 53 full weeks, and where a week starts
469 on a Monday and ends on a Sunday. The first week of an ISO year is
470 the first (Gregorian) calendar week of a year containing a Thursday.
471 This is called week number 1, and the ISO year of that Thursday is
472 the same as its Gregorian year.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000473
Fred Drake436eadd2002-12-31 18:13:11 +0000474 For example, 2004 begins on a Thursday, so the first week of ISO
475 year 2004 begins on Monday, 29 Dec 2003 and ends on Sunday, 4 Jan
476 2004, so that
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000477 \code{date(2003, 12, 29).isocalendar() == (2004, 1, 1)}
Tim Petersfdc58f22004-11-15 03:50:16 +0000478 and
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000479 \code{date(2004, 1, 4).isocalendar() == (2004, 1, 7)}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000480\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000481
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000482\begin{methoddesc}{isoformat}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000483 Return a string representing the date in ISO 8601 format,
484 'YYYY-MM-DD'. For example,
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000485 \code{date(2002, 12, 4).isoformat() == '2002-12-04'}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000486\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000487
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000488\begin{methoddesc}{__str__}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000489 For a date \var{d}, \code{str(\var{d})} is equivalent to
490 \code{\var{d}.isoformat()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000491\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000492
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000493\begin{methoddesc}{ctime}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000494 Return a string representing the date, for example
495 date(2002, 12, 4).ctime() == 'Wed Dec 4 00:00:00 2002'.
496 \code{\var{d}.ctime()} is equivalent to
497 \code{time.ctime(time.mktime(\var{d}.timetuple()))}
498 on platforms where the native C \cfunction{ctime()} function
499 (which \function{time.ctime()} invokes, but which
500 \method{date.ctime()} does not invoke) conforms to the C standard.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000501\end{methoddesc}
Fred Drake436eadd2002-12-31 18:13:11 +0000502
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000503\begin{methoddesc}{strftime}{format}
Fred Drake436eadd2002-12-31 18:13:11 +0000504 Return a string representing the date, controlled by an explicit
505 format string. Format codes referring to hours, minutes or seconds
506 will see 0 values.
507 See the section on \method{strftime()} behavior.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000508\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000509
510
Raymond Hettinger6005a342002-12-30 20:01:24 +0000511\subsection{\class{datetime} Objects \label{datetime-datetime}}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000512
Fred Drakebbdb2502002-12-23 18:58:06 +0000513A \class{datetime} object is a single object containing all the
Tim Peters00372022003-01-09 04:10:05 +0000514information from a \class{date} object and a \class{time} object. Like a
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000515\class{date} object, \class{datetime} assumes the current Gregorian
516calendar extended in both directions; like a time object,
517\class{datetime} assumes there are exactly 3600*24 seconds in every
518day.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000519
Tim Peters00372022003-01-09 04:10:05 +0000520Constructor:
521
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000522\begin{classdesc}{datetime}{year, month, day\optional{,
523 hour\optional{, minute\optional{,
524 second\optional{, microsecond\optional{,
525 tzinfo}}}}}}
Tim Peters00372022003-01-09 04:10:05 +0000526 The year, month and day arguments are required. \var{tzinfo} may
527 be \code{None}, or an instance of a \class{tzinfo} subclass. The
528 remaining arguments may be ints or longs, in the following ranges:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000529
Fred Drake436eadd2002-12-31 18:13:11 +0000530 \begin{itemize}
Tim Peters00372022003-01-09 04:10:05 +0000531 \item \code{MINYEAR <= \var{year} <= MAXYEAR}
Fred Drake436eadd2002-12-31 18:13:11 +0000532 \item \code{1 <= \var{month} <= 12}
533 \item \code{1 <= \var{day} <= number of days in the given month and year}
534 \item \code{0 <= \var{hour} < 24}
535 \item \code{0 <= \var{minute} < 60}
536 \item \code{0 <= \var{second} < 60}
537 \item \code{0 <= \var{microsecond} < 1000000}
538 \end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000539
Tim Peters00372022003-01-09 04:10:05 +0000540 If an argument outside those ranges is given,
541 \exception{ValueError} is raised.
Fred Drake0f8e5432002-12-31 18:31:48 +0000542\end{classdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000543
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000544Other constructors, all class methods:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000545
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000546\begin{methoddesc}{today}{}
Tim Peters00372022003-01-09 04:10:05 +0000547 Return the current local datetime, with \member{tzinfo} \code{None}.
548 This is equivalent to
Fred Drake436eadd2002-12-31 18:13:11 +0000549 \code{datetime.fromtimestamp(time.time())}.
550 See also \method{now()}, \method{fromtimestamp()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000551\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000552
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000553\begin{methoddesc}{now}{\optional{tz}}
Tim Peters10cadce2003-01-23 19:58:02 +0000554 Return the current local date and time. If optional argument
555 \var{tz} is \code{None} or not specified, this is like
556 \method{today()}, but, if possible, supplies more precision than can
557 be gotten from going through a \function{time.time()} timestamp (for
558 example, this may be possible on platforms supplying the C
Fred Drake436eadd2002-12-31 18:13:11 +0000559 \cfunction{gettimeofday()} function).
Tim Peters10cadce2003-01-23 19:58:02 +0000560
561 Else \var{tz} must be an instance of a class \class{tzinfo} subclass,
Tim Peters2a44a8d2003-01-23 20:53:10 +0000562 and the current date and time are converted to \var{tz}'s time
Tim Peters10cadce2003-01-23 19:58:02 +0000563 zone. In this case the result is equivalent to
Tim Peters2a44a8d2003-01-23 20:53:10 +0000564 \code{\var{tz}.fromutc(datetime.utcnow().replace(tzinfo=\var{tz}))}.
Fred Drake436eadd2002-12-31 18:13:11 +0000565 See also \method{today()}, \method{utcnow()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000566\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000567
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000568\begin{methoddesc}{utcnow}{}
Tim Peters10cadce2003-01-23 19:58:02 +0000569 Return the current UTC date and time, with \member{tzinfo} \code{None}.
Tim Peters2a44a8d2003-01-23 20:53:10 +0000570 This is like \method{now()}, but returns the current UTC date and time,
Tim Peters10cadce2003-01-23 19:58:02 +0000571 as a naive \class{datetime} object.
Fred Drake436eadd2002-12-31 18:13:11 +0000572 See also \method{now()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000573\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000574
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000575\begin{methoddesc}{fromtimestamp}{timestamp\optional{, tz}}
Tim Peters2a44a8d2003-01-23 20:53:10 +0000576 Return the local date and time corresponding to the \POSIX{}
577 timestamp, such as is returned by \function{time.time()}.
578 If optional argument \var{tz} is \code{None} or not specified, the
579 timestamp is converted to the platform's local date and time, and
580 the returned \class{datetime} object is naive.
581
582 Else \var{tz} must be an instance of a class \class{tzinfo} subclass,
583 and the timestamp is converted to \var{tz}'s time zone. In this case
584 the result is equivalent to
585 \code{\var{tz}.fromutc(datetime.utcfromtimestamp(\var{timestamp}).replace(tzinfo=\var{tz}))}.
586
587 \method{fromtimestamp()} may raise \exception{ValueError}, if the
588 timestamp is out of the range of values supported by the platform C
Neal Norwitzdaae3272003-01-25 21:08:30 +0000589 \cfunction{localtime()} or \cfunction{gmtime()} functions. It's common
Tim Peters2a44a8d2003-01-23 20:53:10 +0000590 for this to be restricted to years in 1970 through 2038.
Tim Peters75a6e3b2003-01-04 18:17:36 +0000591 Note that on non-POSIX systems that include leap seconds in their
592 notion of a timestamp, leap seconds are ignored by
593 \method{fromtimestamp()}, and then it's possible to have two timestamps
594 differing by a second that yield identical \class{datetime} objects.
Fred Drake436eadd2002-12-31 18:13:11 +0000595 See also \method{utcfromtimestamp()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000596\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000597
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000598\begin{methoddesc}{utcfromtimestamp}{timestamp}
Fred Drake436eadd2002-12-31 18:13:11 +0000599 Return the UTC \class{datetime} corresponding to the \POSIX{}
Tim Peters00372022003-01-09 04:10:05 +0000600 timestamp, with \member{tzinfo} \code{None}.
601 This may raise \exception{ValueError}, if the
Fred Drake436eadd2002-12-31 18:13:11 +0000602 timestamp is out of the range of values supported by the platform
603 C \cfunction{gmtime()} function. It's common for this to be
604 restricted to years in 1970 through 2038.
605 See also \method{fromtimestamp()}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000606\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000607
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000608\begin{methoddesc}{fromordinal}{ordinal}
Fred Drake436eadd2002-12-31 18:13:11 +0000609 Return the \class{datetime} corresponding to the proleptic
610 Gregorian ordinal, where January 1 of year 1 has ordinal 1.
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000611 \exception{ValueError} is raised unless \code{1 <= ordinal <=
612 datetime.max.toordinal()}. The hour, minute, second and
Tim Peters00372022003-01-09 04:10:05 +0000613 microsecond of the result are all 0,
614 and \member{tzinfo} is \code{None}.
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000615\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000616
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +0000617\begin{methoddesc}{combine}{date, time}
Tim Peters00372022003-01-09 04:10:05 +0000618 Return a new \class{datetime} object whose date members are
Fred Drake436eadd2002-12-31 18:13:11 +0000619 equal to the given \class{date} object's, and whose time
Tim Peters00372022003-01-09 04:10:05 +0000620 and \member{tzinfo} members are equal to the given \class{time} object's.
621 For any \class{datetime} object \var{d}, \code{\var{d} ==
622 datetime.combine(\var{d}.date(), \var{d}.timetz())}. If date is a
623 \class{datetime} object, its time and \member{tzinfo} members are
624 ignored.
625 \end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000626
Skip Montanaro0af3ade2005-01-13 04:12:31 +0000627\begin{methoddesc}{strptime}{date_string, format}
628 Return a \class{datetime} corresponding to \var{date_string}, parsed
629 according to \var{format}. This is equivalent to
630 \code{datetime(*(time.strptime(date_string,
631 format)[0:6]))}. \exception{ValueError} is raised if the date_string and
632 format can't be parsed by \function{time.strptime()} or if it returns a
633 value which isn't a time tuple.
Tim Peters9ba36842005-01-13 21:06:25 +0000634
635 \versionadded{2.5}
Skip Montanaro0af3ade2005-01-13 04:12:31 +0000636\end{methoddesc}
637
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000638Class attributes:
639
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000640\begin{memberdesc}{min}
Fred Drake436eadd2002-12-31 18:13:11 +0000641 The earliest representable \class{datetime},
Tim Peters00372022003-01-09 04:10:05 +0000642 \code{datetime(MINYEAR, 1, 1, tzinfo=None)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000643\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000644
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000645\begin{memberdesc}{max}
Fred Drake436eadd2002-12-31 18:13:11 +0000646 The latest representable \class{datetime},
Tim Peters00372022003-01-09 04:10:05 +0000647 \code{datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000648\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000649
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000650\begin{memberdesc}{resolution}
Fred Drake436eadd2002-12-31 18:13:11 +0000651 The smallest possible difference between non-equal \class{datetime}
652 objects, \code{timedelta(microseconds=1)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000653\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000654
655Instance attributes (read-only):
656
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000657\begin{memberdesc}{year}
Tim Peters00372022003-01-09 04:10:05 +0000658 Between \constant{MINYEAR} and \constant{MAXYEAR} inclusive.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000659\end{memberdesc}
660
661\begin{memberdesc}{month}
Tim Peters00372022003-01-09 04:10:05 +0000662 Between 1 and 12 inclusive.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000663\end{memberdesc}
664
665\begin{memberdesc}{day}
Fred Drake436eadd2002-12-31 18:13:11 +0000666 Between 1 and the number of days in the given month of the given
667 year.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000668\end{memberdesc}
669
670\begin{memberdesc}{hour}
Fred Drake436eadd2002-12-31 18:13:11 +0000671 In \code{range(24)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000672\end{memberdesc}
673
674\begin{memberdesc}{minute}
Fred Drake436eadd2002-12-31 18:13:11 +0000675 In \code{range(60)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000676\end{memberdesc}
677
678\begin{memberdesc}{second}
Fred Drake436eadd2002-12-31 18:13:11 +0000679 In \code{range(60)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000680\end{memberdesc}
681
682\begin{memberdesc}{microsecond}
Fred Drake436eadd2002-12-31 18:13:11 +0000683 In \code{range(1000000)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000684\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000685
Tim Peters00372022003-01-09 04:10:05 +0000686\begin{memberdesc}{tzinfo}
687 The object passed as the \var{tzinfo} argument to the
688 \class{datetime} constructor, or \code{None} if none was passed.
689\end{memberdesc}
690
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000691Supported operations:
692
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000693\begin{tableii}{c|l}{code}{Operation}{Result}
694 \lineii{\var{datetime2} = \var{datetime1} + \var{timedelta}}{(1)}
Tim Peters00372022003-01-09 04:10:05 +0000695
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000696 \lineii{\var{datetime2} = \var{datetime1} - \var{timedelta}}{(2)}
697
698 \lineii{\var{timedelta} = \var{datetime1} - \var{datetime2}}{(3)}
699
700 \lineii{\var{datetime1} < \var{datetime2}}
Tim Petersfdc58f22004-11-15 03:50:16 +0000701 {Compares \class{datetime} to \class{datetime}.
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000702 (4)}
703
704\end{tableii}
705
706\begin{description}
707
708\item[(1)]
Tim Peters00372022003-01-09 04:10:05 +0000709
Fred Drakebbdb2502002-12-23 18:58:06 +0000710 datetime2 is a duration of timedelta removed from datetime1, moving
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000711 forward in time if \code{\var{timedelta}.days} > 0, or backward if
712 \code{\var{timedelta}.days} < 0. The result has the same \member{tzinfo} member
Tim Peters00372022003-01-09 04:10:05 +0000713 as the input datetime, and datetime2 - datetime1 == timedelta after.
Fred Drakebbdb2502002-12-23 18:58:06 +0000714 \exception{OverflowError} is raised if datetime2.year would be
715 smaller than \constant{MINYEAR} or larger than \constant{MAXYEAR}.
Tim Peters00372022003-01-09 04:10:05 +0000716 Note that no time zone adjustments are done even if the input is an
717 aware object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000718
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000719\item[(2)]
Fred Drakebbdb2502002-12-23 18:58:06 +0000720 Computes the datetime2 such that datetime2 + timedelta == datetime1.
Tim Peters00372022003-01-09 04:10:05 +0000721 As for addition, the result has the same \member{tzinfo} member
722 as the input datetime, and no time zone adjustments are done even
723 if the input is aware.
Fred Drakebbdb2502002-12-23 18:58:06 +0000724 This isn't quite equivalent to datetime1 + (-timedelta), because
725 -timedelta in isolation can overflow in cases where
726 datetime1 - timedelta does not.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000727
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000728\item[(3)]
Tim Peters00372022003-01-09 04:10:05 +0000729 Subtraction of a \class{datetime} from a
730 \class{datetime} is defined only if both
731 operands are naive, or if both are aware. If one is aware and the
732 other is naive, \exception{TypeError} is raised.
733
734 If both are naive, or both are aware and have the same \member{tzinfo}
735 member, the \member{tzinfo} members are ignored, and the result is
736 a \class{timedelta} object \var{t} such that
737 \code{\var{datetime2} + \var{t} == \var{datetime1}}. No time zone
738 adjustments are done in this case.
739
740 If both are aware and have different \member{tzinfo} members,
741 \code{a-b} acts as if \var{a} and \var{b} were first converted to
742 naive UTC datetimes first. The result is
743 \code{(\var{a}.replace(tzinfo=None) - \var{a}.utcoffset()) -
744 (\var{b}.replace(tzinfo=None) - \var{b}.utcoffset())}
745 except that the implementation never overflows.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000746
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000747\item[(4)]
748
749\var{datetime1} is considered less than \var{datetime2}
Tim Petersfdc58f22004-11-15 03:50:16 +0000750when \var{datetime1} precedes \var{datetime2} in time.
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000751
752If one comparand is naive and
753the other is aware, \exception{TypeError} is raised. If both
Tim Peters00372022003-01-09 04:10:05 +0000754 comparands are aware, and have the same \member{tzinfo} member,
755 the common \member{tzinfo} member is ignored and the base datetimes
756 are compared. If both comparands are aware and have different
757 \member{tzinfo} members, the comparands are first adjusted by
758 subtracting their UTC offsets (obtained from \code{self.utcoffset()}).
Tim Peters8d81a012003-01-24 22:36:34 +0000759 \note{In order to stop comparison from falling back to the default
760 scheme of comparing object addresses, datetime comparison
761 normally raises \exception{TypeError} if the other comparand
762 isn't also a \class{datetime} object. However,
763 \code{NotImplemented} is returned instead if the other comparand
764 has a \method{timetuple} attribute. This hook gives other
765 kinds of date objects a chance at implementing mixed-type
Tim Peters07534a62003-02-07 22:50:28 +0000766 comparison. If not, when a \class{datetime} object is
767 compared to an object of a different type, \exception{TypeError}
768 is raised unless the comparison is \code{==} or \code{!=}. The
769 latter cases return \constant{False} or \constant{True},
770 respectively.}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000771
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000772\end{description}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000773
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000774\class{datetime} objects can be used as dictionary keys. In Boolean
775contexts, all \class{datetime} objects are considered to be true.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000776
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000777
778Instance methods:
779
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000780\begin{methoddesc}{date}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000781 Return \class{date} object with same year, month and day.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000782\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000783
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000784\begin{methoddesc}{time}{}
Tim Peters00372022003-01-09 04:10:05 +0000785 Return \class{time} object with same hour, minute, second and microsecond.
786 \member{tzinfo} is \code{None}. See also method \method{timetz()}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000787\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000788
Tim Peters00372022003-01-09 04:10:05 +0000789\begin{methoddesc}{timetz}{}
790 Return \class{time} object with same hour, minute, second, microsecond,
791 and tzinfo members. See also method \method{time()}.
792\end{methoddesc}
793
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000794\begin{methoddesc}{replace}{\optional{year\optional{, month\optional{,
795 day\optional{, hour\optional{, minute\optional{,
796 second\optional{, microsecond\optional{,
797 tzinfo}}}}}}}}}
Tim Peters00372022003-01-09 04:10:05 +0000798 Return a datetime with the same members, except for those members given
799 new values by whichever keyword arguments are specified. Note that
800 \code{tzinfo=None} can be specified to create a naive datetime from
801 an aware datetime with no conversion of date and time members.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000802\end{methoddesc}
Tim Peters12bf3392002-12-24 05:41:27 +0000803
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000804\begin{methoddesc}{astimezone}{tz}
Tim Peters00372022003-01-09 04:10:05 +0000805 Return a \class{datetime} object with new \member{tzinfo} member
Tim Petersf196a0a2003-01-22 04:45:50 +0000806 \var{tz}, adjusting the date and time members so the result is the
807 same UTC time as \var{self}, but in \var{tz}'s local time.
808
809 \var{tz} must be an instance of a \class{tzinfo} subclass, and its
810 \method{utcoffset()} and \method{dst()} methods must not return
811 \code{None}. \var{self} must be aware (\code{\var{self}.tzinfo} must
812 not be \code{None}, and \code{\var{self}.utcoffset()} must not return
813 \code{None}).
814
Andrew M. Kuchling570e3582003-02-05 21:15:38 +0000815 If \code{\var{self}.tzinfo} is \var{tz},
Tim Petersf196a0a2003-01-22 04:45:50 +0000816 \code{\var{self}.astimezone(\var{tz})} is equal to \var{self}: no
817 adjustment of date or time members is performed.
818 Else the result is local time in time zone \var{tz}, representing the
819 same UTC time as \var{self}: after \code{\var{astz} =
820 \var{dt}.astimezone(\var{tz})},
821 \code{\var{astz} - \var{astz}.utcoffset()} will usually have the same
822 date and time members as \code{\var{dt} - \var{dt}.utcoffset()}.
823 The discussion of class \class{tzinfo} explains the cases at Daylight
824 Saving Time transition boundaries where this cannot be achieved (an issue
825 only if \var{tz} models both standard and daylight time).
826
827 If you merely want to attach a time zone object \var{tz} to a
828 datetime \var{dt} without adjustment of date and time members,
829 use \code{\var{dt}.replace(tzinfo=\var{tz})}. If
830 you merely want to remove the time zone object from an aware datetime
831 \var{dt} without conversion of date and time members, use
832 \code{\var{dt}.replace(tzinfo=None)}.
833
834 Note that the default \method{tzinfo.fromutc()} method can be overridden
Raymond Hettinger1c90a672003-09-06 05:36:13 +0000835 in a \class{tzinfo} subclass to affect the result returned by
Tim Petersf196a0a2003-01-22 04:45:50 +0000836 \method{astimezone()}. Ignoring error cases, \method{astimezone()}
837 acts like:
838
839 \begin{verbatim}
840 def astimezone(self, tz):
841 if self.tzinfo is tz:
842 return self
843 # Convert self to UTC, and attach the new time zone object.
844 utc = (self - self.utcoffset()).replace(tzinfo=tz)
845 # Convert from UTC to tz's local time.
846 return tz.fromutc(utc)
847 \end{verbatim}
Tim Peters00372022003-01-09 04:10:05 +0000848\end{methoddesc}
849
850\begin{methoddesc}{utcoffset}{}
851 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Petersf196a0a2003-01-22 04:45:50 +0000852 returns \code{\var{self}.tzinfo.utcoffset(\var{self})}, and
853 raises an exception if the latter doesn't return \code{None}, or
854 a \class{timedelta} object representing a whole number of minutes
855 with magnitude less than one day.
856\end{methoddesc}
857
858\begin{methoddesc}{dst}{}
859 If \member{tzinfo} is \code{None}, returns \code{None}, else
860 returns \code{\var{self}.tzinfo.dst(\var{self})}, and
861 raises an exception if the latter doesn't return \code{None}, or
862 a \class{timedelta} object representing a whole number of minutes
863 with magnitude less than one day.
Tim Peters00372022003-01-09 04:10:05 +0000864\end{methoddesc}
865
866\begin{methoddesc}{tzname}{}
867 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Petersf196a0a2003-01-22 04:45:50 +0000868 returns \code{\var{self}.tzinfo.tzname(\var{self})},
869 raises an exception if the latter doesn't return \code{None} or
870 a string object,
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000871\end{methoddesc}
Tim Peters80475bb2002-12-25 07:40:55 +0000872
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000873\begin{methoddesc}{timetuple}{}
Martin v. Löwisef365372003-09-04 18:29:53 +0000874 Return a \class{time.struct_time} such as returned by
Fred Drake436eadd2002-12-31 18:13:11 +0000875 \function{time.localtime()}.
Tim Peters00372022003-01-09 04:10:05 +0000876 \code{\var{d}.timetuple()} is equivalent to
Martin v. Löwisef365372003-09-04 18:29:53 +0000877 \code{time.struct_time((\var{d}.year, \var{d}.month, \var{d}.day,
Fred Drake436eadd2002-12-31 18:13:11 +0000878 \var{d}.hour, \var{d}.minute, \var{d}.second,
Tim Peters00372022003-01-09 04:10:05 +0000879 \var{d}.weekday(),
Fred Drake436eadd2002-12-31 18:13:11 +0000880 \var{d}.toordinal() - date(\var{d}.year, 1, 1).toordinal() + 1,
Martin v. Löwisef365372003-09-04 18:29:53 +0000881 dst))}
Tim Peters00372022003-01-09 04:10:05 +0000882 The \member{tm_isdst} flag of the result is set according to
883 the \method{dst()} method: \member{tzinfo} is \code{None} or
884 \method{dst()} returns \code{None},
885 \member{tm_isdst} is set to \code{-1}; else if \method{dst()} returns
886 a non-zero value, \member{tm_isdst} is set to \code{1};
887 else \code{tm_isdst} is set to \code{0}.
888\end{methoddesc}
889
890\begin{methoddesc}{utctimetuple}{}
891 If \class{datetime} instance \var{d} is naive, this is the same as
892 \code{\var{d}.timetuple()} except that \member{tm_isdst} is forced to 0
893 regardless of what \code{d.dst()} returns. DST is never in effect
894 for a UTC time.
895
896 If \var{d} is aware, \var{d} is normalized to UTC time, by subtracting
Martin v. Löwisef365372003-09-04 18:29:53 +0000897 \code{\var{d}.utcoffset()}, and a \class{time.struct_time} for the
Tim Peters00372022003-01-09 04:10:05 +0000898 normalized time is returned. \member{tm_isdst} is forced to 0.
899 Note that the result's \member{tm_year} member may be
900 \constant{MINYEAR}-1 or \constant{MAXYEAR}+1, if \var{d}.year was
901 \code{MINYEAR} or \code{MAXYEAR} and UTC adjustment spills over a
902 year boundary.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000903\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000904
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000905\begin{methoddesc}{toordinal}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000906 Return the proleptic Gregorian ordinal of the date. The same as
Tim Peters00372022003-01-09 04:10:05 +0000907 \code{self.date().toordinal()}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000908\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000909
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000910\begin{methoddesc}{weekday}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000911 Return the day of the week as an integer, where Monday is 0 and
Tim Peters00372022003-01-09 04:10:05 +0000912 Sunday is 6. The same as \code{self.date().weekday()}.
Fred Drake436eadd2002-12-31 18:13:11 +0000913 See also \method{isoweekday()}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000914\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000915
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000916\begin{methoddesc}{isoweekday}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000917 Return the day of the week as an integer, where Monday is 1 and
Raymond Hettingereca984f2003-05-10 04:21:08 +0000918 Sunday is 7. The same as \code{self.date().isoweekday()}.
Fred Drake436eadd2002-12-31 18:13:11 +0000919 See also \method{weekday()}, \method{isocalendar()}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000920\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000921
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000922\begin{methoddesc}{isocalendar}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000923 Return a 3-tuple, (ISO year, ISO week number, ISO weekday). The
Tim Peters00372022003-01-09 04:10:05 +0000924 same as \code{self.date().isocalendar()}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000925\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000926
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000927\begin{methoddesc}{isoformat}{\optional{sep}}
Fred Drake436eadd2002-12-31 18:13:11 +0000928 Return a string representing the date and time in ISO 8601 format,
929 YYYY-MM-DDTHH:MM:SS.mmmmmm
Tim Peters00372022003-01-09 04:10:05 +0000930 or, if \member{microsecond} is 0,
Fred Drake436eadd2002-12-31 18:13:11 +0000931 YYYY-MM-DDTHH:MM:SS
Tim Peters00372022003-01-09 04:10:05 +0000932
933 If \method{utcoffset()} does not return \code{None}, a 6-character
934 string is appended, giving the UTC offset in (signed) hours and
935 minutes:
936 YYYY-MM-DDTHH:MM:SS.mmmmmm+HH:MM
937 or, if \member{microsecond} is 0
938 YYYY-MM-DDTHH:MM:SS+HH:MM
939
Fred Drake436eadd2002-12-31 18:13:11 +0000940 The optional argument \var{sep} (default \code{'T'}) is a
941 one-character separator, placed between the date and time portions
942 of the result. For example,
Tim Peters00372022003-01-09 04:10:05 +0000943
944\begin{verbatim}
945>>> from datetime import tzinfo, timedelta, datetime
946>>> class TZ(tzinfo):
947... def utcoffset(self, dt): return timedelta(minutes=-399)
948...
949>>> datetime(2002, 12, 25, tzinfo=TZ()).isoformat(' ')
950'2002-12-25 00:00:00-06:39'
951\end{verbatim}
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000952\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000953
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000954\begin{methoddesc}{__str__}{}
Fred Drake436eadd2002-12-31 18:13:11 +0000955 For a \class{datetime} instance \var{d}, \code{str(\var{d})} is
956 equivalent to \code{\var{d}.isoformat(' ')}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000957\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000958
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000959\begin{methoddesc}{ctime}{}
Tim Peters00372022003-01-09 04:10:05 +0000960 Return a string representing the date and time, for example
961 \code{datetime(2002, 12, 4, 20, 30, 40).ctime() ==
962 'Wed Dec 4 20:30:40 2002'}.
Fred Drake436eadd2002-12-31 18:13:11 +0000963 \code{d.ctime()} is equivalent to
964 \code{time.ctime(time.mktime(d.timetuple()))} on platforms where
965 the native C \cfunction{ctime()} function (which
966 \function{time.ctime()} invokes, but which
967 \method{datetime.ctime()} does not invoke) conforms to the C
968 standard.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000969\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000970
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000971\begin{methoddesc}{strftime}{format}
Fred Drake436eadd2002-12-31 18:13:11 +0000972 Return a string representing the date and time, controlled by an
973 explicit format string. See the section on \method{strftime()}
974 behavior.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +0000975\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000976
977
Raymond Hettinger6005a342002-12-30 20:01:24 +0000978\subsection{\class{time} Objects \label{datetime-time}}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000979
Tim Peters00372022003-01-09 04:10:05 +0000980A time object represents a (local) time of day, independent of any
981particular day, and subject to adjustment via a \class{tzinfo} object.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000982
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000983\begin{classdesc}{time}{hour\optional{, minute\optional{, second\optional{,
984 microsecond\optional{, tzinfo}}}}}
Tim Peters00372022003-01-09 04:10:05 +0000985 All arguments are optional. \var{tzinfo} may be \code{None}, or
986 an instance of a \class{tzinfo} subclass. The remaining arguments
987 may be ints or longs, in the following ranges:
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000988
Tim Peters00372022003-01-09 04:10:05 +0000989 \begin{itemize}
990 \item \code{0 <= \var{hour} < 24}
991 \item \code{0 <= \var{minute} < 60}
992 \item \code{0 <= \var{second} < 60}
993 \item \code{0 <= \var{microsecond} < 1000000}.
994 \end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +0000995
Tim Peters00372022003-01-09 04:10:05 +0000996 If an argument outside those ranges is given,
Fred Drakeb0e8f5d2003-12-30 20:36:20 +0000997 \exception{ValueError} is raised. All default to \code{0} except
998 \var{tzinfo}, which defaults to \constant{None}.
Fred Drake0f8e5432002-12-31 18:31:48 +0000999\end{classdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001000
1001Class attributes:
1002
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001003\begin{memberdesc}{min}
Fred Drake436eadd2002-12-31 18:13:11 +00001004 The earliest representable \class{time}, \code{time(0, 0, 0, 0)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001005\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001006
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001007\begin{memberdesc}{max}
Fred Drake436eadd2002-12-31 18:13:11 +00001008 The latest representable \class{time}, \code{time(23, 59, 59, 999999)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001009\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001010
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001011\begin{memberdesc}{resolution}
Fred Drake436eadd2002-12-31 18:13:11 +00001012 The smallest possible difference between non-equal \class{time}
1013 objects, \code{timedelta(microseconds=1)}, although note that
1014 arithmetic on \class{time} objects is not supported.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001015\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001016
1017Instance attributes (read-only):
1018
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001019\begin{memberdesc}{hour}
Fred Drake436eadd2002-12-31 18:13:11 +00001020 In \code{range(24)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001021\end{memberdesc}
Fred Drake436eadd2002-12-31 18:13:11 +00001022
Tim Petersbad8ff02002-12-30 20:52:32 +00001023\begin{memberdesc}{minute}
Fred Drake436eadd2002-12-31 18:13:11 +00001024 In \code{range(60)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001025\end{memberdesc}
Fred Drake436eadd2002-12-31 18:13:11 +00001026
Tim Petersbad8ff02002-12-30 20:52:32 +00001027\begin{memberdesc}{second}
Fred Drake436eadd2002-12-31 18:13:11 +00001028 In \code{range(60)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001029\end{memberdesc}
Fred Drake436eadd2002-12-31 18:13:11 +00001030
Tim Petersbad8ff02002-12-30 20:52:32 +00001031\begin{memberdesc}{microsecond}
Fred Drake436eadd2002-12-31 18:13:11 +00001032 In \code{range(1000000)}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001033\end{memberdesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001034
Tim Peters00372022003-01-09 04:10:05 +00001035\begin{memberdesc}{tzinfo}
1036 The object passed as the tzinfo argument to the \class{time}
1037 constructor, or \code{None} if none was passed.
1038\end{memberdesc}
1039
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001040Supported operations:
1041
Fred Drakebbdb2502002-12-23 18:58:06 +00001042\begin{itemize}
1043 \item
Tim Peters00372022003-01-09 04:10:05 +00001044 comparison of \class{time} to \class{time},
1045 where \var{a} is considered less than \var{b} when \var{a} precedes
1046 \var{b} in time. If one comparand is naive and the other is aware,
1047 \exception{TypeError} is raised. If both comparands are aware, and
1048 have the same \member{tzinfo} member, the common \member{tzinfo}
1049 member is ignored and the base times are compared. If both
1050 comparands are aware and have different \member{tzinfo} members,
1051 the comparands are first adjusted by subtracting their UTC offsets
1052 (obtained from \code{self.utcoffset()}).
Tim Peters07534a62003-02-07 22:50:28 +00001053 In order to stop mixed-type comparisons from falling back to the
1054 default comparison by object address, when a \class{time} object is
1055 compared to an object of a different type, \exception{TypeError} is
1056 raised unless the comparison is \code{==} or \code{!=}. The latter
1057 cases return \constant{False} or \constant{True}, respectively.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001058
Fred Drakebbdb2502002-12-23 18:58:06 +00001059 \item
1060 hash, use as dict key
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001061
Fred Drakebbdb2502002-12-23 18:58:06 +00001062 \item
1063 efficient pickling
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001064
Fred Drakebbdb2502002-12-23 18:58:06 +00001065 \item
Tim Peters00372022003-01-09 04:10:05 +00001066 in Boolean contexts, a \class{time} object is considered to be
1067 true if and only if, after converting it to minutes and
1068 subtracting \method{utcoffset()} (or \code{0} if that's
1069 \code{None}), the result is non-zero.
Fred Drakebbdb2502002-12-23 18:58:06 +00001070\end{itemize}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001071
1072Instance methods:
1073
Fred Drakeb0e8f5d2003-12-30 20:36:20 +00001074\begin{methoddesc}{replace}{\optional{hour\optional{, minute\optional{,
1075 second\optional{, microsecond\optional{,
1076 tzinfo}}}}}}
Tim Peters00372022003-01-09 04:10:05 +00001077 Return a \class{time} with the same value, except for those members given
1078 new values by whichever keyword arguments are specified. Note that
1079 \code{tzinfo=None} can be specified to create a naive \class{time} from
1080 an aware \class{time}, without conversion of the time members.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001081\end{methoddesc}
Tim Peters12bf3392002-12-24 05:41:27 +00001082
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001083\begin{methoddesc}{isoformat}{}
Fred Drake436eadd2002-12-31 18:13:11 +00001084 Return a string representing the time in ISO 8601 format,
1085 HH:MM:SS.mmmmmm
Tim Peters00372022003-01-09 04:10:05 +00001086 or, if self.microsecond is 0,
Fred Drake436eadd2002-12-31 18:13:11 +00001087 HH:MM:SS
Tim Peters00372022003-01-09 04:10:05 +00001088 If \method{utcoffset()} does not return \code{None}, a 6-character
1089 string is appended, giving the UTC offset in (signed) hours and
1090 minutes:
1091 HH:MM:SS.mmmmmm+HH:MM
1092 or, if self.microsecond is 0,
1093 HH:MM:SS+HH:MM
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001094\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001095
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001096\begin{methoddesc}{__str__}{}
Fred Drake436eadd2002-12-31 18:13:11 +00001097 For a time \var{t}, \code{str(\var{t})} is equivalent to
1098 \code{\var{t}.isoformat()}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001099\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001100
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001101\begin{methoddesc}{strftime}{format}
Fred Drake436eadd2002-12-31 18:13:11 +00001102 Return a string representing the time, controlled by an explicit
1103 format string. See the section on \method{strftime()} behavior.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001104\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001105
Tim Peters00372022003-01-09 04:10:05 +00001106\begin{methoddesc}{utcoffset}{}
1107 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Petersf196a0a2003-01-22 04:45:50 +00001108 returns \code{\var{self}.tzinfo.utcoffset(None)}, and
1109 raises an exception if the latter doesn't return \code{None} or
1110 a \class{timedelta} object representing a whole number of minutes
1111 with magnitude less than one day.
Tim Peters00372022003-01-09 04:10:05 +00001112\end{methoddesc}
1113
1114\begin{methoddesc}{dst}{}
1115 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Petersf196a0a2003-01-22 04:45:50 +00001116 returns \code{\var{self}.tzinfo.dst(None)}, and
1117 raises an exception if the latter doesn't return \code{None}, or
1118 a \class{timedelta} object representing a whole number of minutes
1119 with magnitude less than one day.
Tim Peters00372022003-01-09 04:10:05 +00001120\end{methoddesc}
1121
1122\begin{methoddesc}{tzname}{}
1123 If \member{tzinfo} is \code{None}, returns \code{None}, else
Tim Petersf196a0a2003-01-22 04:45:50 +00001124 returns \code{\var{self}.tzinfo.tzname(None)}, or
1125 raises an exception if the latter doesn't return \code{None} or
1126 a string object.
Tim Peters00372022003-01-09 04:10:05 +00001127\end{methoddesc}
1128
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001129
Raymond Hettinger6005a342002-12-30 20:01:24 +00001130\subsection{\class{tzinfo} Objects \label{datetime-tzinfo}}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001131
Fred Drakebbdb2502002-12-23 18:58:06 +00001132\class{tzinfo} is an abstract base clase, meaning that this class
1133should not be instantiated directly. You need to derive a concrete
1134subclass, and (at least) supply implementations of the standard
1135\class{tzinfo} methods needed by the \class{datetime} methods you
Tim Petersbad8ff02002-12-30 20:52:32 +00001136use. The \module{datetime} module does not supply any concrete
Fred Drakebbdb2502002-12-23 18:58:06 +00001137subclasses of \class{tzinfo}.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001138
Fred Drakebbdb2502002-12-23 18:58:06 +00001139An instance of (a concrete subclass of) \class{tzinfo} can be passed
Tim Peters00372022003-01-09 04:10:05 +00001140to the constructors for \class{datetime} and \class{time} objects.
1141The latter objects view their members as being in local time, and the
Fred Drakebbdb2502002-12-23 18:58:06 +00001142\class{tzinfo} object supports methods revealing offset of local time
1143from UTC, the name of the time zone, and DST offset, all relative to a
1144date or time object passed to them.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001145
Tim Petersbad8ff02002-12-30 20:52:32 +00001146Special requirement for pickling: A \class{tzinfo} subclass must have an
Tim Peters2483b612002-12-24 16:30:58 +00001147\method{__init__} method that can be called with no arguments, else it
1148can be pickled but possibly not unpickled again. This is a technical
1149requirement that may be relaxed in the future.
1150
Fred Drakebbdb2502002-12-23 18:58:06 +00001151A concrete subclass of \class{tzinfo} may need to implement the
1152following methods. Exactly which methods are needed depends on the
Tim Petersbad8ff02002-12-30 20:52:32 +00001153uses made of aware \module{datetime} objects. If in doubt, simply
1154implement all of them.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001155
Tim Petersbad8ff02002-12-30 20:52:32 +00001156\begin{methoddesc}{utcoffset}{self, dt}
Fred Drake436eadd2002-12-31 18:13:11 +00001157 Return offset of local time from UTC, in minutes east of UTC. If
1158 local time is west of UTC, this should be negative. Note that this
1159 is intended to be the total offset from UTC; for example, if a
1160 \class{tzinfo} object represents both time zone and DST adjustments,
1161 \method{utcoffset()} should return their sum. If the UTC offset
1162 isn't known, return \code{None}. Else the value returned must be
Tim Peters397301e2003-01-02 21:28:08 +00001163 a \class{timedelta} object specifying a whole number of minutes in the
1164 range -1439 to 1439 inclusive (1440 = 24*60; the magnitude of the offset
1165 must be less than one day). Most implementations of
1166 \method{utcoffset()} will probably look like one of these two:
Fred Drake436eadd2002-12-31 18:13:11 +00001167
Tim Petersbad8ff02002-12-30 20:52:32 +00001168\begin{verbatim}
Tim Petersf3615152003-01-01 21:51:37 +00001169 return CONSTANT # fixed-offset class
Fred Drake436eadd2002-12-31 18:13:11 +00001170 return CONSTANT + self.dst(dt) # daylight-aware class
Guido van Rossum8e7ec7c2002-12-31 04:39:05 +00001171\end{verbatim}
Tim Peters710fb152003-01-02 19:35:54 +00001172
1173 If \method{utcoffset()} does not return \code{None},
1174 \method{dst()} should not return \code{None} either.
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001175
Tim Peters327098a2003-01-20 22:54:38 +00001176 The default implementation of \method{utcoffset()} raises
1177 \exception{NotImplementedError}.
1178\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001179
Tim Petersbad8ff02002-12-30 20:52:32 +00001180\begin{methoddesc}{dst}{self, dt}
Tim Peters00372022003-01-09 04:10:05 +00001181 Return the daylight saving time (DST) adjustment, in minutes east of
Tim Petersb01c39b2003-01-21 16:44:27 +00001182 UTC, or \code{None} if DST information isn't known. Return
1183 \code{timedelta(0)} if DST is not in effect.
Tim Peters397301e2003-01-02 21:28:08 +00001184 If DST is in effect, return the offset as a
Fred Drake436eadd2002-12-31 18:13:11 +00001185 \class{timedelta} object (see \method{utcoffset()} for details).
1186 Note that DST offset, if applicable, has
1187 already been added to the UTC offset returned by
1188 \method{utcoffset()}, so there's no need to consult \method{dst()}
Tim Peters327098a2003-01-20 22:54:38 +00001189 unless you're interested in obtaining DST info separately. For
Tim Peters00372022003-01-09 04:10:05 +00001190 example, \method{datetime.timetuple()} calls its \member{tzinfo}
Fred Drake436eadd2002-12-31 18:13:11 +00001191 member's \method{dst()} method to determine how the
Tim Petersf3615152003-01-01 21:51:37 +00001192 \member{tm_isdst} flag should be set, and
Tim Petersf196a0a2003-01-22 04:45:50 +00001193 \method{tzinfo.fromutc()} calls \method{dst()} to account for
Tim Petersf3615152003-01-01 21:51:37 +00001194 DST changes when crossing time zones.
1195
1196 An instance \var{tz} of a \class{tzinfo} subclass that models both
1197 standard and daylight times must be consistent in this sense:
1198
Tim Petersf196a0a2003-01-22 04:45:50 +00001199 \code{\var{tz}.utcoffset(\var{dt}) - \var{tz}.dst(\var{dt})}
Tim Petersf3615152003-01-01 21:51:37 +00001200
Tim Peters00372022003-01-09 04:10:05 +00001201 must return the same result for every \class{datetime} \var{dt}
Fred Drakeb0e8f5d2003-12-30 20:36:20 +00001202 with \code{\var{dt}.tzinfo == \var{tz}} For sane \class{tzinfo}
Tim Petersf196a0a2003-01-22 04:45:50 +00001203 subclasses, this expression yields the time zone's "standard offset",
1204 which should not depend on the date or the time, but only on geographic
1205 location. The implementation of \method{datetime.astimezone()} relies
1206 on this, but cannot detect violations; it's the programmer's
1207 responsibility to ensure it. If a \class{tzinfo} subclass cannot
1208 guarantee this, it may be able to override the default implementation
1209 of \method{tzinfo.fromutc()} to work correctly with \method{astimezone()}
1210 regardless.
1211
1212 Most implementations of \method{dst()} will probably look like one
1213 of these two:
1214
1215\begin{verbatim}
Fred Drakeb0e8f5d2003-12-30 20:36:20 +00001216 def dst(self):
1217 # a fixed-offset class: doesn't account for DST
1218 return timedelta(0)
1219\end{verbatim}
Tim Petersf196a0a2003-01-22 04:45:50 +00001220
1221 or
1222
Fred Drakeb0e8f5d2003-12-30 20:36:20 +00001223\begin{verbatim}
1224 def dst(self):
1225 # Code to set dston and dstoff to the time zone's DST
1226 # transition times based on the input dt.year, and expressed
1227 # in standard local time. Then
Tim Petersf196a0a2003-01-22 04:45:50 +00001228
Fred Drakeb0e8f5d2003-12-30 20:36:20 +00001229 if dston <= dt.replace(tzinfo=None) < dstoff:
1230 return timedelta(hours=1)
1231 else:
1232 return timedelta(0)
Tim Petersf196a0a2003-01-22 04:45:50 +00001233\end{verbatim}
Tim Petersf3615152003-01-01 21:51:37 +00001234
Tim Peters327098a2003-01-20 22:54:38 +00001235 The default implementation of \method{dst()} raises
1236 \exception{NotImplementedError}.
1237\end{methoddesc}
1238
Tim Peters710fb152003-01-02 19:35:54 +00001239\begin{methoddesc}{tzname}{self, dt}
Tim Petersf196a0a2003-01-22 04:45:50 +00001240 Return the time zone name corresponding to the \class{datetime}
1241 object \var{dt}, as a string.
1242 Nothing about string names is defined by the
1243 \module{datetime} module, and there's no requirement that it mean
1244 anything in particular. For example, "GMT", "UTC", "-500", "-5:00",
1245 "EDT", "US/Eastern", "America/New York" are all valid replies. Return
Tim Peters710fb152003-01-02 19:35:54 +00001246 \code{None} if a string name isn't known. Note that this is a method
Tim Petersf196a0a2003-01-22 04:45:50 +00001247 rather than a fixed string primarily because some \class{tzinfo}
1248 subclasses will wish to return different names depending on the specific
1249 value of \var{dt} passed, especially if the \class{tzinfo} class is
Tim Peters710fb152003-01-02 19:35:54 +00001250 accounting for daylight time.
Tim Peters710fb152003-01-02 19:35:54 +00001251
Tim Peters327098a2003-01-20 22:54:38 +00001252 The default implementation of \method{tzname()} raises
1253 \exception{NotImplementedError}.
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001254\end{methoddesc}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001255
Tim Peters00372022003-01-09 04:10:05 +00001256These methods are called by a \class{datetime} or \class{time} object,
1257in response to their methods of the same names. A \class{datetime}
1258object passes itself as the argument, and a \class{time} object passes
Tim Petersbad8ff02002-12-30 20:52:32 +00001259\code{None} as the argument. A \class{tzinfo} subclass's methods should
1260therefore be prepared to accept a \var{dt} argument of \code{None}, or of
Tim Peters00372022003-01-09 04:10:05 +00001261class \class{datetime}.
Tim Petersbad8ff02002-12-30 20:52:32 +00001262
1263When \code{None} is passed, it's up to the class designer to decide the
1264best response. For example, returning \code{None} is appropriate if the
Tim Peters00372022003-01-09 04:10:05 +00001265class wishes to say that time objects don't participate in the
Tim Petersf196a0a2003-01-22 04:45:50 +00001266\class{tzinfo} protocols. It may be more useful for \code{utcoffset(None)}
Tim Peters327098a2003-01-20 22:54:38 +00001267to return the standard UTC offset, as there is no other convention for
1268discovering the standard offset.
Tim Petersbad8ff02002-12-30 20:52:32 +00001269
Tim Peters00372022003-01-09 04:10:05 +00001270When a \class{datetime} object is passed in response to a
1271\class{datetime} method, \code{dt.tzinfo} is the same object as
Tim Petersbad8ff02002-12-30 20:52:32 +00001272\var{self}. \class{tzinfo} methods can rely on this, unless
1273user code calls \class{tzinfo} methods directly. The intent is that
1274the \class{tzinfo} methods interpret \var{dt} as being in local time,
Tim Peters327098a2003-01-20 22:54:38 +00001275and not need worry about objects in other timezones.
Tim Petersbad8ff02002-12-30 20:52:32 +00001276
Tim Petersf196a0a2003-01-22 04:45:50 +00001277There is one more \class{tzinfo} method that a subclass may wish to
1278override:
1279
1280\begin{methoddesc}{fromutc}{self, dt}
1281 This is called from the default \class{datetime.astimezone()}
1282 implementation. When called from that, \code{\var{dt}.tzinfo} is
1283 \var{self}, and \var{dt}'s date and time members are to be viewed as
1284 expressing a UTC time. The purpose of \method{fromutc()} is to
1285 adjust the date and time members, returning an equivalent datetime in
1286 \var{self}'s local time.
1287
1288 Most \class{tzinfo} subclasses should be able to inherit the default
1289 \method{fromutc()} implementation without problems. It's strong enough
1290 to handle fixed-offset time zones, and time zones accounting for both
1291 standard and daylight time, and the latter even if the DST transition
1292 times differ in different years. An example of a time zone the default
1293 \method{fromutc()} implementation may not handle correctly in all cases
1294 is one where the standard offset (from UTC) depends on the specific date
1295 and time passed, which can happen for political reasons.
1296 The default implementations of \method{astimezone()} and
1297 \method{fromutc()} may not produce the result you want if the result is
1298 one of the hours straddling the moment the standard offset changes.
1299
1300 Skipping code for error cases, the default \method{fromutc()}
1301 implementation acts like:
1302
1303 \begin{verbatim}
1304 def fromutc(self, dt):
1305 # raise ValueError error if dt.tzinfo is not self
1306 dtoff = dt.utcoffset()
1307 dtdst = dt.dst()
1308 # raise ValueError if dtoff is None or dtdst is None
1309 delta = dtoff - dtdst # this is self's standard offset
1310 if delta:
1311 dt += delta # convert to standard local time
1312 dtdst = dt.dst()
1313 # raise ValueError if dtdst is None
1314 if dtdst:
1315 return dt + dtdst
1316 else:
1317 return dt
1318 \end{verbatim}
1319\end{methoddesc}
1320
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001321Example \class{tzinfo} classes:
1322
Fred Drakebbdb2502002-12-23 18:58:06 +00001323\verbatiminput{tzinfo-examples.py}
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001324
Tim Peters327098a2003-01-20 22:54:38 +00001325Note that there are unavoidable subtleties twice per year in a
1326\class{tzinfo}
Tim Petersadf64202003-01-04 06:03:15 +00001327subclass accounting for both standard and daylight time, at the DST
1328transition points. For concreteness, consider US Eastern (UTC -0500),
1329where EDT begins the minute after 1:59 (EST) on the first Sunday in
1330April, and ends the minute after 1:59 (EDT) on the last Sunday in October:
1331
1332\begin{verbatim}
1333 UTC 3:MM 4:MM 5:MM 6:MM 7:MM 8:MM
1334 EST 22:MM 23:MM 0:MM 1:MM 2:MM 3:MM
1335 EDT 23:MM 0:MM 1:MM 2:MM 3:MM 4:MM
1336
1337 start 22:MM 23:MM 0:MM 1:MM 3:MM 4:MM
1338
1339 end 23:MM 0:MM 1:MM 1:MM 2:MM 3:MM
1340\end{verbatim}
1341
1342When DST starts (the "start" line), the local wall clock leaps from 1:59
1343to 3:00. A wall time of the form 2:MM doesn't really make sense on that
Tim Peters75a6e3b2003-01-04 18:17:36 +00001344day, so \code{astimezone(Eastern)} won't deliver a result with
Fred Drakeb0e8f5d2003-12-30 20:36:20 +00001345\code{hour == 2} on the
Tim Peters327098a2003-01-20 22:54:38 +00001346day DST begins. In order for \method{astimezone()} to make this
Tim Petersf196a0a2003-01-22 04:45:50 +00001347guarantee, the \method{rzinfo.dst()} method must consider times
Tim Peters327098a2003-01-20 22:54:38 +00001348in the "missing hour" (2:MM for Eastern) to be in daylight time.
Tim Petersadf64202003-01-04 06:03:15 +00001349
1350When DST ends (the "end" line), there's a potentially worse problem:
Tim Peters327098a2003-01-20 22:54:38 +00001351there's an hour that can't be spelled unambiguously in local wall time:
1352the last hour of daylight time. In Eastern, that's times of
1353the form 5:MM UTC on the day daylight time ends. The local wall clock
Tim Petersadf64202003-01-04 06:03:15 +00001354leaps from 1:59 (daylight time) back to 1:00 (standard time) again.
Tim Peters327098a2003-01-20 22:54:38 +00001355Local times of the form 1:MM are ambiguous. \method{astimezone()} mimics
1356the local clock's behavior by mapping two adjacent UTC hours into the
1357same local hour then. In the Eastern example, UTC times of the form
13585:MM and 6:MM both map to 1:MM when converted to Eastern. In order for
Tim Petersf196a0a2003-01-22 04:45:50 +00001359\method{astimezone()} to make this guarantee, the \method{tzinfo.dst()}
1360method must consider times in the "repeated hour" to be in
Tim Peters327098a2003-01-20 22:54:38 +00001361standard time. This is easily arranged, as in the example, by expressing
1362DST switch times in the time zone's standard local time.
Tim Petersadf64202003-01-04 06:03:15 +00001363
Tim Peters327098a2003-01-20 22:54:38 +00001364Applications that can't bear such ambiguities should avoid using hybrid
1365\class{tzinfo} subclasses; there are no ambiguities when using UTC, or
1366any other fixed-offset \class{tzinfo} subclass (such as a class
1367representing only EST (fixed offset -5 hours), or only EDT (fixed offset
1368-4 hours)).
Tim Petersadf64202003-01-04 06:03:15 +00001369
Andrew M. Kuchlingca2623a2002-12-18 14:59:11 +00001370
Tim Peters29fb9c72002-12-23 22:21:52 +00001371\subsection{\method{strftime()} Behavior}
1372
Tim Peters00372022003-01-09 04:10:05 +00001373\class{date}, \class{datetime}, and \class{time}
1374objects all support a \code{strftime(\var{format})}
Tim Peters29fb9c72002-12-23 22:21:52 +00001375method, to create a string representing the time under the control of
1376an explicit format string. Broadly speaking,
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +00001377\code{d.strftime(fmt)}
Tim Peters29fb9c72002-12-23 22:21:52 +00001378acts like the \refmodule{time} module's
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +00001379\code{time.strftime(fmt, d.timetuple())}
Tim Peters29fb9c72002-12-23 22:21:52 +00001380although not all objects support a \method{timetuple()} method.
1381
Tim Peters00372022003-01-09 04:10:05 +00001382For \class{time} objects, the format codes for
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +00001383year, month, and day should not be used, as time objects have no such
1384values. If they're used anyway, \code{1900} is substituted for the
1385year, and \code{0} for the month and day.
Tim Peters29fb9c72002-12-23 22:21:52 +00001386
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +00001387For \class{date} objects, the format codes for hours, minutes, and
1388seconds should not be used, as \class{date} objects have no such
1389values. If they're used anyway, \code{0} is substituted for them.
Tim Peters29fb9c72002-12-23 22:21:52 +00001390
Fred Drakea37e5cc2002-12-30 21:26:42 +00001391For a naive object, the \code{\%z} and \code{\%Z} format codes are
Tim Peters29fb9c72002-12-23 22:21:52 +00001392replaced by empty strings.
1393
1394For an aware object:
1395
1396\begin{itemize}
1397 \item[\code{\%z}]
1398 \method{utcoffset()} is transformed into a 5-character string of
1399 the form +HHMM or -HHMM, where HH is a 2-digit string giving the
1400 number of UTC offset hours, and MM is a 2-digit string giving the
1401 number of UTC offset minutes. For example, if
Andrew M. Kuchlingc97868e2002-12-30 03:06:45 +00001402 \method{utcoffset()} returns \code{timedelta(hours=-3, minutes=-30)},
Tim Peters1cff9fc2002-12-24 16:25:29 +00001403 \code{\%z} is replaced with the string \code{'-0330'}.
Tim Peters29fb9c72002-12-23 22:21:52 +00001404
1405 \item[\code{\%Z}]
1406 If \method{tzname()} returns \code{None}, \code{\%Z} is replaced
Andrew M. Kuchlingfa918582002-12-30 14:20:16 +00001407 by an empty string. Otherwise \code{\%Z} is replaced by the returned
Tim Peters29fb9c72002-12-23 22:21:52 +00001408 value, which must be a string.
1409\end{itemize}
1410
1411The full set of format codes supported varies across platforms,
1412because Python calls the platform C library's \function{strftime()}
1413function, and platform variations are common. The documentation for
1414Python's \refmodule{time} module lists the format codes that the C
1415standard (1989 version) requires, and those work on all platforms
1416with a standard C implementation. Note that the 1999 version of the
1417C standard added additional format codes.
1418
1419The exact range of years for which \method{strftime()} works also
1420varies across platforms. Regardless of platform, years before 1900
1421cannot be used.
Skip Montanaroef1b50d2005-12-06 21:00:47 +00001422
1423\subsection{Examples}
1424
1425\subsubsection{Creating Datetime Objects from Formatted Strings}
1426
1427The \class{datetime} class does not directly support parsing formatted time
1428strings. You can use \function{time.strptime} to do the parsing and create
1429a \class{datetime} object from the tuple it returns:
1430
1431\begin{verbatim}
1432>>> s = "2005-12-06T12:13:14"
1433>>> from datetime import datetime
1434>>> from time import strptime
1435>>> datetime(*strptime(s, "%Y-%m-%dT%H:%M:%S")[0:6])
1436datetime.datetime(2005, 12, 6, 12, 13, 14)
1437\end{verbatim}
1438