\section{Built-in Module \sectcode{time}}

\bimodindex{time}
This module provides various time-related functions.
It is always available.

An explanation of some terminology and conventions is in order.

\begin{itemize}

\item
The ``epoch'' is the point where the time starts.  On January 1st of that
year, at 0 hours, the ``time since the epoch'' is zero.  For UNIX, the
epoch is 1970.  To find out what the epoch is, look at \code{gmtime(0)}.

\item
UTC is Coordinated Universal Time (formerly known as Greenwich Mean
Time).  The acronym UTC is not a mistake but a compromise between
English and French.

\item
DST is Daylight Saving Time, an adjustment of the timezone by
(usually) one hour during part of the year.  DST rules are magic
(determined by local law) and can change from year to year.  The C
library has a table containing the local rules (often it is read from
a system file for flexibility) and is the only source of True Wisdom
in this respect.

\item
The precision of the various real-time functions may be less than
suggested by the units in which their value or argument is expressed.
E.g.\ on most UNIX systems, the clock ``ticks'' only 50 or 100 times a
second, and on the Mac, times are only accurate to whole seconds.

\end{itemize}

The module defines the following functions and data items:

\renewcommand{\indexsubitem}{(in module time)}

\begin{datadesc}{altzone}
The offset of the local DST timezone, in seconds west of the 0th
meridian, if one is defined.  Negative if the local DST timezone is
east of the 0th meridian (as in Western Europe, including the UK).
Only use this if \code{daylight} is nonzero.
\end{datadesc}


\begin{funcdesc}{asctime}{tuple}
Convert a tuple representing a time as returned by \code{gmtime()} or
\code{localtime()} to a 24-character string of the following form:
\code{'Sun Jun 20 23:21:05 1993'}.  Note: unlike the C function of
the same name, there is no trailing newline.
\end{funcdesc}


\begin{funcdesc}{clock}{}
Return the current CPU time as a floating point number expressed in
seconds.  The precision, and in fact the very definiton of the meaning
of ``CPU time'', depends on that of the C function of the same name.
\end{funcdesc}


\begin{funcdesc}{ctime}{secs}
Convert a time expressed in seconds since the epoch to a string
representing local time.  \code{ctime(t)} is equivalent to
\code{asctime(localtime(t))}.
\end{funcdesc}

\begin{datadesc}{daylight}
Nonzero if a DST timezone is defined.
\end{datadesc}

\begin{funcdesc}{gmtime}{secs}
Convert a time expressed in seconds since the epoch to a tuple of 9
integers, in UTC: year (e.g.\ 1993), month (1--12), day (1--31), hour
(0--23), minute (0--59), second (0--59), weekday (0--6, monday is 0),
Julian day (1--366), dst flag (always zero).  Fractions of a second are
ignored.  Note subtle differences with the C function of this name.
\end{funcdesc}

\begin{funcdesc}{localtime}{secs}
Like \code{gmtime} but converts to local time.  The dst flag is set
to 1 when DST applies to the given time.
\end{funcdesc}

\begin{funcdesc}{mktime}{tuple}
This is the inverse function of \code{localtime}.  Its argument is the
full 9-tuple (since the dst flag is needed).  It returns an integer.  If the
input value can't be represented as a non-negative integer, OverflowError is raised.
\end{funcdesc}

\begin{funcdesc}{sleep}{secs}
Suspend execution for the given number of seconds.  The argument may
be a floating point number to indicate a more precise sleep time.
\end{funcdesc}

\begin{funcdesc}{strftime}{format, tuple}
Convert a tuple representing a time as returned by \code{gmtime()} or
\code{localtime()} to a string as specified by the format argument.
See the \code{strftime(3)} man page for details of the syntax of
format strings.
\end{funcdesc}

\begin{funcdesc}{time}{}
Return the time as a floating point number expressed in seconds since
the epoch, in UTC.  Note that even though the time is always returned
as a floating point number, not all systems provide time with a better
precision than 1 second.
\end{funcdesc}

\begin{datadesc}{timezone}
The offset of the local (non-DST) timezone, in seconds west of the 0th
meridian (i.e. negative in most of Western Europe, positive in the US,
zero in the UK).
\end{datadesc}

\begin{datadesc}{tzname}
A tuple of two strings: the first is the name of the local non-DST
timezone, the second is the name of the local DST timezone.  If no DST
timezone is defined, the second string should not be used.
\end{datadesc}
