blob: 1c9ffe95a8cc631e6448489efadf112a3987df35 [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.
154\end{funcdesc}
155
Guido van Rossum26ee8091995-09-13 17:37:49 +0000156\begin{funcdesc}{strftime}{format, tuple}
Fred Drake0ad55fb1998-12-08 19:59:36 +0000157Convert a tuple representing a time as returned by \function{gmtime()}
158or \function{localtime()} to a string as specified by the \var{format}
159argument. \var{format} must be a string.
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000160
Fred Drake0ad55fb1998-12-08 19:59:36 +0000161The following directives can be embedded in the \var{format} string.
162They are shown without the optional field width and precision
163specification, and are replaced by the indicated characters in the
164\function{strftime()} result:
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000165
Fred Drakeee601911998-04-11 20:53:03 +0000166\begin{tableii}{c|p{24em}}{code}{Directive}{Meaning}
Fred Drake2cfc8351998-04-03 06:12:21 +0000167 \lineii{\%a}{Locale's abbreviated weekday name.}
168 \lineii{\%A}{Locale's full weekday name.}
169 \lineii{\%b}{Locale's abbreviated month name.}
170 \lineii{\%B}{Locale's full month name.}
171 \lineii{\%c}{Locale's appropriate date and time representation.}
172 \lineii{\%d}{Day of the month as a decimal number [01,31].}
173 \lineii{\%H}{Hour (24-hour clock) as a decimal number [00,23].}
174 \lineii{\%I}{Hour (12-hour clock) as a decimal number [01,12].}
175 \lineii{\%j}{Day of the year as a decimal number [001,366].}
176 \lineii{\%m}{Month as a decimal number [01,12].}
177 \lineii{\%M}{Minute as a decimal number [00,59].}
178 \lineii{\%p}{Locale's equivalent of either AM or PM.}
179 \lineii{\%S}{Second as a decimal number [00,61].}
180 \lineii{\%U}{Week number of the year (Sunday as the first day of the
181 week) as a decimal number [00,53]. All days in a new year
182 preceding the first Sunday are considered to be in week 0.}
183 \lineii{\%w}{Weekday as a decimal number [0(Sunday),6].}
184 \lineii{\%W}{Week number of the year (Monday as the first day of the
185 week) as a decimal number [00,53]. All days in a new year
186 preceding the first Sunday are considered to be in week 0.}
187 \lineii{\%x}{Locale's appropriate date representation.}
188 \lineii{\%X}{Locale's appropriate time representation.}
189 \lineii{\%y}{Year without century as a decimal number [00,99].}
190 \lineii{\%Y}{Year with century as a decimal number.}
191 \lineii{\%Z}{Time zone name (or by no characters if no time zone exists).}
192 \lineii{\%\%}{\%}
Fred Drake094579e1996-12-13 22:09:52 +0000193\end{tableii}
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000194
Fred Drake094579e1996-12-13 22:09:52 +0000195Additional directives may be supported on certain platforms, but
Fred Drakeabc8cc61999-05-26 16:15:17 +0000196only the ones listed here have a meaning standardized by ANSI C.
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000197
Fred Drake094579e1996-12-13 22:09:52 +0000198On some platforms, an optional field width and precision
Fred Drake0ad55fb1998-12-08 19:59:36 +0000199specification can immediately follow the initial \character{\%} of a
Fred Drake094579e1996-12-13 22:09:52 +0000200directive in the following order; this is also not portable.
Fred Drake2cfc8351998-04-03 06:12:21 +0000201The field width is normally 2 except for \code{\%j} where it is 3.
Guido van Rossum26ee8091995-09-13 17:37:49 +0000202\end{funcdesc}
203
Guido van Rossum5d237581998-06-09 16:30:56 +0000204\begin{funcdesc}{strptime}{string\optional{, format}}
205Parse a string representing a time according to a format. The return
Fred Drake0ad55fb1998-12-08 19:59:36 +0000206value is a tuple as returned by \function{gmtime()} or
207\function{localtime()}. The \var{format} parameter uses the same
208directives as those used by \function{strftime()}; it defaults to
209\code{"\%a \%b \%d \%H:\%M:\%S \%Y"} which matches the formatting
210returned by \function{ctime()}. The same platform caveats apply; see
211the local \UNIX{} documentation for restrictions or additional
212supported directives. If \var{string} cannot be parsed according to
213\var{format}, \exception{ValueError} is raised. This function may not
214be defined on all platforms.
Guido van Rossum5d237581998-06-09 16:30:56 +0000215\end{funcdesc}
216
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000217\begin{funcdesc}{time}{}
218Return the time as a floating point number expressed in seconds since
219the epoch, in UTC. Note that even though the time is always returned
220as a floating point number, not all systems provide time with a better
Guido van Rossumbd851cd1994-08-23 13:26:22 +0000221precision than 1 second.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000222\end{funcdesc}
223
224\begin{datadesc}{timezone}
225The offset of the local (non-DST) timezone, in seconds west of the 0th
226meridian (i.e. negative in most of Western Europe, positive in the US,
227zero in the UK).
228\end{datadesc}
229
230\begin{datadesc}{tzname}
231A tuple of two strings: the first is the name of the local non-DST
232timezone, the second is the name of the local DST timezone. If no DST
233timezone is defined, the second string should not be used.
234\end{datadesc}
Guido van Rossum8cf2db41996-07-30 18:32:04 +0000235