blob: 0c28bf26471c4a76042c6fc61a874dff8cd5c744 [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{time} ---
2 Time access and conversions.}
Fred Drakeb91e9341998-07-23 17:59:49 +00003\declaremodule{builtin}{time}
4
5\modulesynopsis{Time access and conversions.}
6
Fred Drake2cfc8351998-04-03 06:12:21 +00007
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00008This module provides various time-related functions.
Guido van Rossumbd851cd1994-08-23 13:26:22 +00009It is always available.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000010
11An explanation of some terminology and conventions is in order.
12
13\begin{itemize}
14
15\item
Fred Drakeeb4ed151998-04-11 04:52:15 +000016The \dfn{epoch}\index{epoch} is the point where the time starts. On
17January 1st of that year, at 0 hours, the ``time since the epoch'' is
18zero. For \UNIX{}, the epoch is 1970. To find out what the epoch is,
Fred Drakeabc8cc61999-05-26 16:15:17 +000019look at \code{gmtime(0)}.
Guido van Rossum929bd0e1998-06-09 21:25:41 +000020
21\item
Fred Drake0ad55fb1998-12-08 19:59:36 +000022The functions in this module do not handle dates and times before the
Guido van Rossum929bd0e1998-06-09 21:25:41 +000023epoch or far in the future. The cut-off point in the future is
Fred Drakeabc8cc61999-05-26 16:15:17 +000024determined by the C library; for \UNIX{}, it is typically in
252038\index{Year 2038}.
Guido van Rossum929bd0e1998-06-09 21:25:41 +000026
27\item
Fred Drakeabc8cc61999-05-26 16:15:17 +000028\strong{Year 2000 (Y2K) issues}:\index{Year 2000}\index{Y2K} Python
29depends on the platform's C library, which generally doesn't have year
302000 issues, since all dates and times are represented internally as
31seconds since the epoch. Functions accepting a time tuple (see below)
32generally require a 4-digit year. For backward compatibility, 2-digit
33years are supported if the module variable \code{accept2dyear} is a
34non-zero integer; this variable is initialized to \code{1} unless the
Fred Drake0ad55fb1998-12-08 19:59:36 +000035environment variable \envvar{PYTHONY2K} is set to a non-empty string,
36in which case it is initialized to \code{0}. Thus, you can set
Fred Draked8a41e61999-02-19 17:54:10 +000037\envvar{PYTHONY2K} to a non-empty string in the environment to require 4-digit
Fred Drake0ad55fb1998-12-08 19:59:36 +000038years for all year input. When 2-digit years are accepted, they are
39converted according to the \POSIX{} or X/Open standard: values 69-99
40are mapped to 1969-1999, and values 0--68 are mapped to 2000--2068.
41Values 100--1899 are always illegal. Note that this is new as of
42Python 1.5.2(a2); earlier versions, up to Python 1.5.1 and 1.5.2a1,
Fred Drakeabc8cc61999-05-26 16:15:17 +000043would add 1900 to year values below 1900.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000044
45\item
Fred Drakeabc8cc61999-05-26 16:15:17 +000046UTC\index{UTC} is Coordinated Universal Time\index{Coordinated
47Universal Time} (formerly known as Greenwich Mean
48Time,\index{Greenwich Mean Time} or GMT). The acronym UTC is not a
49mistake but a compromise between English and French.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000050
51\item
Fred Drakeabc8cc61999-05-26 16:15:17 +000052DST is Daylight Saving Time,\index{Daylight Saving Time} an adjustment
53of the timezone by (usually) one hour during part of the year. DST
54rules are magic (determined by local law) and can change from year to
55year. The C library has a table containing the local rules (often it
56is read from a system file for flexibility) and is the only source of
57True Wisdom in this respect.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000058
59\item
60The precision of the various real-time functions may be less than
61suggested by the units in which their value or argument is expressed.
Fred Drake094579e1996-12-13 22:09:52 +000062E.g.\ on most \UNIX{} systems, the clock ``ticks'' only 50 or 100 times a
Guido van Rossum470be141995-03-17 16:07:09 +000063second, and on the Mac, times are only accurate to whole seconds.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000064
Guido van Rossum8cf2db41996-07-30 18:32:04 +000065\item
Fred Drake2cfc8351998-04-03 06:12:21 +000066On the other hand, the precision of \function{time()} and
67\function{sleep()} is better than their \UNIX{} equivalents: times are
68expressed as floating point numbers, \function{time()} returns the
69most accurate time available (using \UNIX{} \cfunction{gettimeofday()}
70where available), and \function{sleep()} will accept a time with a
71nonzero fraction (\UNIX{} \cfunction{select()} is used to implement
72this, where available).
Guido van Rossum21be1471996-12-12 17:59:37 +000073
74\item
Guido van Rossum929bd0e1998-06-09 21:25:41 +000075The time tuple as returned by \function{gmtime()},
76\function{localtime()}, and \function{strptime()}, and accepted by
Fred Drake6ffa4451999-01-19 19:35:18 +000077\function{asctime()}, \function{mktime()} and \function{strftime()},
78is a tuple of 9 integers: year (e.g.\ 1993), month (1--12), day
79(1--31), hour (0--23), minute (0--59), second (0--59), weekday (0--6,
80monday is 0), Julian day (1--366) and daylight savings flag (-1, 0 or
Fred Drakeabc8cc61999-05-26 16:15:17 +0000811). Note that unlike the C structure, the month value is a range
Fred Drake6ffa4451999-01-19 19:35:18 +000082of 1-12, not 0-11. A year value will be handled as descibed under
83``Year 2000 (Y2K) issues'' above. A \code{-1} argument as daylight
84savings flag, passed to \function{mktime()} will usually result in the
85correct daylight savings state to be filled in.
Guido van Rossum8cf2db41996-07-30 18:32:04 +000086
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000087\end{itemize}
88
Guido van Rossum470be141995-03-17 16:07:09 +000089The module defines the following functions and data items:
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000090
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000091
Fred Drake6ffa4451999-01-19 19:35:18 +000092\begin{datadesc}{accept2dyear}
93Boolean value indicating whether two-digit year values will be
94accepted. This is true by default, but will be set to false if the
95environment variable \envvar{PYTHONY2K} has been set to a non-empty
96string. It may also be modified at run time.
97\end{datadesc}
98
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000099\begin{datadesc}{altzone}
100The offset of the local DST timezone, in seconds west of the 0th
Guido van Rossum470be141995-03-17 16:07:09 +0000101meridian, if one is defined. Negative if the local DST timezone is
102east of the 0th meridian (as in Western Europe, including the UK).
103Only use this if \code{daylight} is nonzero.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000104\end{datadesc}
105
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000106\begin{funcdesc}{asctime}{tuple}
Fred Drake0ad55fb1998-12-08 19:59:36 +0000107Convert a tuple representing a time as returned by \function{gmtime()}
108or \function{localtime()} to a 24-character string of the following form:
Fred Drakeabc8cc61999-05-26 16:15:17 +0000109\code{'Sun Jun 20 23:21:05 1993'}. Note: unlike the C function of
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000110the same name, there is no trailing newline.
111\end{funcdesc}
112
Guido van Rossumbd851cd1994-08-23 13:26:22 +0000113\begin{funcdesc}{clock}{}
114Return the current CPU time as a floating point number expressed in
Guido van Rossum470be141995-03-17 16:07:09 +0000115seconds. The precision, and in fact the very definiton of the meaning
Fred Drakeabc8cc61999-05-26 16:15:17 +0000116of ``CPU time''\index{CPU time}, depends on that of the C function
Fred Drake2cfc8351998-04-03 06:12:21 +0000117of the same name, but in any case, this is the function to use for
118benchmarking\index{benchmarking} Python or timing algorithms.
Guido van Rossumbd851cd1994-08-23 13:26:22 +0000119\end{funcdesc}
120
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000121\begin{funcdesc}{ctime}{secs}
122Convert a time expressed in seconds since the epoch to a string
Fred Drake2cfc8351998-04-03 06:12:21 +0000123representing local time. \code{ctime(\var{secs})} is equivalent to
124\code{asctime(localtime(\var{secs}))}.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000125\end{funcdesc}
126
127\begin{datadesc}{daylight}
128Nonzero if a DST timezone is defined.
129\end{datadesc}
130
131\begin{funcdesc}{gmtime}{secs}
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000132Convert a time expressed in seconds since the epoch to a time tuple
133in UTC in which the dst flag is always zero. Fractions of a second are
Guido van Rossum929bd0e1998-06-09 21:25:41 +0000134ignored. See above for a description of the tuple lay-out.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000135\end{funcdesc}
136
137\begin{funcdesc}{localtime}{secs}
Fred Drake2cfc8351998-04-03 06:12:21 +0000138Like \function{gmtime()} but converts to local time. The dst flag is
139set to \code{1} when DST applies to the given time.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000140\end{funcdesc}
141
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000142\begin{funcdesc}{mktime}{tuple}
Fred Drake0ad55fb1998-12-08 19:59:36 +0000143This is the inverse function of \function{localtime()}. Its argument
144is the full 9-tuple (since the dst flag is needed --- pass \code{-1}
145as the dst flag if it is unknown) which expresses the time in
146\emph{local} time, not UTC. It returns a floating point number, for
147compatibility with \function{time()}. If the input value cannot be
148represented as a valid time, \exception{OverflowError} is raised.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000149\end{funcdesc}
150
151\begin{funcdesc}{sleep}{secs}
152Suspend execution for the given number of seconds. The argument may
153be a floating point number to indicate a more precise sleep time.
Guido van Rossumb3fc9d11999-08-19 14:42:54 +0000154The actual suspension time may be less than that requested because any
155caught signal will terminate the \function{sleep()} following
156execution of that signal's catching routine. Also, the suspension
157time may be longer than requested by an arbitrary amount because of
158the scheduling of other activity in the system.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000159\end{funcdesc}
160
Guido van Rossum26ee8091995-09-13 17:37:49 +0000161\begin{funcdesc}{strftime}{format, tuple}
Fred Drake0ad55fb1998-12-08 19:59:36 +0000162Convert a tuple representing a time as returned by \function{gmtime()}
163or \function{localtime()} to a string as specified by the \var{format}
164argument. \var{format} must be a string.
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000165
Fred Drake0ad55fb1998-12-08 19:59:36 +0000166The following directives can be embedded in the \var{format} string.
167They are shown without the optional field width and precision
168specification, and are replaced by the indicated characters in the
169\function{strftime()} result:
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000170
Fred Drakeee601911998-04-11 20:53:03 +0000171\begin{tableii}{c|p{24em}}{code}{Directive}{Meaning}
Fred Drake2cfc8351998-04-03 06:12:21 +0000172 \lineii{\%a}{Locale's abbreviated weekday name.}
173 \lineii{\%A}{Locale's full weekday name.}
174 \lineii{\%b}{Locale's abbreviated month name.}
175 \lineii{\%B}{Locale's full month name.}
176 \lineii{\%c}{Locale's appropriate date and time representation.}
177 \lineii{\%d}{Day of the month as a decimal number [01,31].}
178 \lineii{\%H}{Hour (24-hour clock) as a decimal number [00,23].}
179 \lineii{\%I}{Hour (12-hour clock) as a decimal number [01,12].}
180 \lineii{\%j}{Day of the year as a decimal number [001,366].}
181 \lineii{\%m}{Month as a decimal number [01,12].}
182 \lineii{\%M}{Minute as a decimal number [00,59].}
183 \lineii{\%p}{Locale's equivalent of either AM or PM.}
184 \lineii{\%S}{Second as a decimal number [00,61].}
185 \lineii{\%U}{Week number of the year (Sunday as the first day of the
186 week) as a decimal number [00,53]. All days in a new year
187 preceding the first Sunday are considered to be in week 0.}
188 \lineii{\%w}{Weekday as a decimal number [0(Sunday),6].}
189 \lineii{\%W}{Week number of the year (Monday as the first day of the
190 week) as a decimal number [00,53]. All days in a new year
191 preceding the first Sunday are considered to be in week 0.}
192 \lineii{\%x}{Locale's appropriate date representation.}
193 \lineii{\%X}{Locale's appropriate time representation.}
194 \lineii{\%y}{Year without century as a decimal number [00,99].}
195 \lineii{\%Y}{Year with century as a decimal number.}
196 \lineii{\%Z}{Time zone name (or by no characters if no time zone exists).}
197 \lineii{\%\%}{\%}
Fred Drake094579e1996-12-13 22:09:52 +0000198\end{tableii}
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000199
Fred Drake094579e1996-12-13 22:09:52 +0000200Additional directives may be supported on certain platforms, but
Fred Drakeabc8cc61999-05-26 16:15:17 +0000201only the ones listed here have a meaning standardized by ANSI C.
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000202
Fred Drake094579e1996-12-13 22:09:52 +0000203On some platforms, an optional field width and precision
Fred Drake0ad55fb1998-12-08 19:59:36 +0000204specification can immediately follow the initial \character{\%} of a
Fred Drake094579e1996-12-13 22:09:52 +0000205directive in the following order; this is also not portable.
Fred Drake2cfc8351998-04-03 06:12:21 +0000206The field width is normally 2 except for \code{\%j} where it is 3.
Guido van Rossum26ee8091995-09-13 17:37:49 +0000207\end{funcdesc}
208
Guido van Rossum5d237581998-06-09 16:30:56 +0000209\begin{funcdesc}{strptime}{string\optional{, format}}
210Parse a string representing a time according to a format. The return
Fred Drake0ad55fb1998-12-08 19:59:36 +0000211value is a tuple as returned by \function{gmtime()} or
212\function{localtime()}. The \var{format} parameter uses the same
213directives as those used by \function{strftime()}; it defaults to
214\code{"\%a \%b \%d \%H:\%M:\%S \%Y"} which matches the formatting
215returned by \function{ctime()}. The same platform caveats apply; see
216the local \UNIX{} documentation for restrictions or additional
217supported directives. If \var{string} cannot be parsed according to
218\var{format}, \exception{ValueError} is raised. This function may not
219be defined on all platforms.
Guido van Rossum5d237581998-06-09 16:30:56 +0000220\end{funcdesc}
221
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000222\begin{funcdesc}{time}{}
223Return the time as a floating point number expressed in seconds since
224the epoch, in UTC. Note that even though the time is always returned
225as a floating point number, not all systems provide time with a better
Guido van Rossumbd851cd1994-08-23 13:26:22 +0000226precision than 1 second.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000227\end{funcdesc}
228
229\begin{datadesc}{timezone}
230The offset of the local (non-DST) timezone, in seconds west of the 0th
231meridian (i.e. negative in most of Western Europe, positive in the US,
232zero in the UK).
233\end{datadesc}
234
235\begin{datadesc}{tzname}
236A tuple of two strings: the first is the name of the local non-DST
237timezone, the second is the name of the local DST timezone. If no DST
238timezone is defined, the second string should not be used.
239\end{datadesc}
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000240