| 
									
										
										
										
											1998-08-10 19:42:37 +00:00
										 |  |  | \section{\module{time} --- | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |          Time access and conversions} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \declaremodule{builtin}{time} | 
					
						
							| 
									
										
										
										
											1998-07-23 17:59:49 +00:00
										 |  |  | \modulesynopsis{Time access and conversions.} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-04-03 06:12:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-05-05 16:46:26 +00:00
										 |  |  | This module provides various time-related functions.  It is always | 
					
						
							|  |  |  | available, but not all functions are available on all platforms.  Most | 
					
						
							|  |  |  | of the functions defined in this module call platform C library | 
					
						
							|  |  |  | functions with the same name.  It may sometimes be helpful to consult | 
					
						
							|  |  |  | the platform documentation, because the semantics of these functions | 
					
						
							|  |  |  | varies among platforms. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | An explanation of some terminology and conventions is in order. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							| 
									
										
										
										
											1998-04-11 04:52:15 +00:00
										 |  |  | The \dfn{epoch}\index{epoch} is the point where the time starts.  On | 
					
						
							|  |  |  | January 1st of that year, at 0 hours, the ``time since the epoch'' is | 
					
						
							| 
									
										
										
										
											2001-11-28 07:26:15 +00:00
										 |  |  | zero.  For \UNIX, the epoch is 1970.  To find out what the epoch is, | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | look at \code{gmtime(0)}. | 
					
						
							| 
									
										
										
										
											1998-06-09 21:25:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | The functions in this module do not handle dates and times before the | 
					
						
							| 
									
										
										
										
											1998-06-09 21:25:41 +00:00
										 |  |  | epoch or far in the future.  The cut-off point in the future is | 
					
						
							| 
									
										
										
										
											2001-11-28 07:26:15 +00:00
										 |  |  | determined by the C library; for \UNIX, it is typically in | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | 2038\index{Year 2038}. | 
					
						
							| 
									
										
										
										
											1998-06-09 21:25:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | \strong{Year 2000 (Y2K) issues}:\index{Year 2000}\index{Y2K}  Python | 
					
						
							|  |  |  | depends on the platform's C library, which generally doesn't have year | 
					
						
							|  |  |  | 2000 issues, since all dates and times are represented internally as | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | seconds since the epoch.  Functions accepting a \class{struct_time} | 
					
						
							|  |  |  | (see below) generally require a 4-digit year.  For backward | 
					
						
							|  |  |  | compatibility, 2-digit years are supported if the module variable | 
					
						
							|  |  |  | \code{accept2dyear} is a non-zero integer; this variable is | 
					
						
							|  |  |  | initialized to \code{1} unless the environment variable | 
					
						
							|  |  |  | \envvar{PYTHONY2K} is set to a non-empty string, in which case it is | 
					
						
							|  |  |  | initialized to \code{0}.  Thus, you can set | 
					
						
							| 
									
										
										
										
											1999-02-19 17:54:10 +00:00
										 |  |  | \envvar{PYTHONY2K} to a non-empty string in the environment to require 4-digit | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | years for all year input.  When 2-digit years are accepted, they are | 
					
						
							|  |  |  | converted according to the \POSIX{} or X/Open standard: values 69-99 | 
					
						
							|  |  |  | are mapped to 1969-1999, and values 0--68 are mapped to 2000--2068. | 
					
						
							|  |  |  | Values 100--1899 are always illegal.  Note that this is new as of | 
					
						
							|  |  |  | Python 1.5.2(a2); earlier versions, up to Python 1.5.1 and 1.5.2a1, | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | would add 1900 to year values below 1900. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | UTC\index{UTC} is Coordinated Universal Time\index{Coordinated | 
					
						
							|  |  |  | Universal Time} (formerly known as Greenwich Mean | 
					
						
							|  |  |  | Time,\index{Greenwich Mean Time} or GMT).  The acronym UTC is not a | 
					
						
							|  |  |  | mistake but a compromise between English and French. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \item | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | DST is Daylight Saving Time,\index{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. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \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. | 
					
						
							| 
									
										
										
										
											1996-12-13 22:09:52 +00:00
										 |  |  | E.g.\ on most \UNIX{} systems, the clock ``ticks'' only 50 or 100 times a | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | second, and on the Mac, times are only accurate to whole seconds. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-12-12 17:59:37 +00:00
										 |  |  | \item | 
					
						
							| 
									
										
										
										
											1998-04-03 06:12:21 +00:00
										 |  |  | On the other hand, the precision of \function{time()} and | 
					
						
							|  |  |  | \function{sleep()} is better than their \UNIX{} equivalents: times are | 
					
						
							|  |  |  | expressed as floating point numbers, \function{time()} returns the | 
					
						
							|  |  |  | most accurate time available (using \UNIX{} \cfunction{gettimeofday()} | 
					
						
							|  |  |  | where available), and \function{sleep()} will accept a time with a | 
					
						
							|  |  |  | nonzero fraction (\UNIX{} \cfunction{select()} is used to implement | 
					
						
							|  |  |  | this, where available). | 
					
						
							| 
									
										
										
										
											1996-12-12 17:59:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-07-30 18:32:04 +00:00
										 |  |  | \item | 
					
						
							| 
									
										
										
										
											2002-11-13 19:05:01 +00:00
										 |  |  | The time value as returned by \function{gmtime()}, | 
					
						
							| 
									
										
										
										
											1998-06-09 21:25:41 +00:00
										 |  |  | \function{localtime()}, and \function{strptime()}, and accepted by | 
					
						
							| 
									
										
										
										
											1999-01-19 19:35:18 +00:00
										 |  |  | \function{asctime()}, \function{mktime()} and \function{strftime()}, | 
					
						
							| 
									
										
										
										
											2002-11-13 19:05:01 +00:00
										 |  |  | is a sequence of 9 integers.  The return values of \function{gmtime()}, | 
					
						
							|  |  |  | \function{localtime()}, and \function{strptime()} also offer attribute | 
					
						
							|  |  |  | names for individual fields. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{tableiii}{c|l|l}{textrm}{Index}{Attribute}{Values} | 
					
						
							|  |  |  |   \lineiii{0}{\member{tm_year}}{(for example, 1993)} | 
					
						
							|  |  |  |   \lineiii{1}{\member{tm_mon}}{range [1,12]} | 
					
						
							|  |  |  |   \lineiii{2}{\member{tm_mday}}{range [1,31]} | 
					
						
							|  |  |  |   \lineiii{3}{\member{tm_hour}}{range [0,23]} | 
					
						
							|  |  |  |   \lineiii{4}{\member{tm_min}}{range [0,59]} | 
					
						
							|  |  |  |   \lineiii{5}{\member{tm_sec}}{range [0,61]; see \strong{(1)} in \function{strftime()} description} | 
					
						
							|  |  |  |   \lineiii{6}{\member{tm_wday}}{range [0,6], Monday is 0} | 
					
						
							|  |  |  |   \lineiii{7}{\member{tm_yday}}{range [1,366]} | 
					
						
							|  |  |  |   \lineiii{8}{\member{tm_isdst}}{0, 1 or -1; see below} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \end{tableiii} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note that unlike the C structure, the month value is a | 
					
						
							|  |  |  | range of 1-12, not 0-11.  A year value will be handled as described | 
					
						
							| 
									
										
										
										
											2002-11-13 19:05:01 +00:00
										 |  |  | under ``Year 2000 (Y2K) issues'' above.  A \code{-1} argument as the | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | daylight savings flag, passed to \function{mktime()} will usually | 
					
						
							|  |  |  | result in the correct daylight savings state to be filled in. | 
					
						
							| 
									
										
										
										
											1996-07-30 18:32:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-29 18:01:24 +00:00
										 |  |  | When a tuple with an incorrect length is passed to a function | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | expecting a \class{struct_time}, or having elements of the wrong type, a | 
					
						
							| 
									
										
										
										
											2001-10-29 18:01:24 +00:00
										 |  |  | \exception{TypeError} is raised. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-13 19:05:01 +00:00
										 |  |  | \versionchanged[The time value sequence was changed from a tuple to a | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  |                 \class{struct_time}, with the addition of attribute names | 
					
						
							| 
									
										
										
										
											2002-11-13 19:05:01 +00:00
										 |  |  |                 for the fields]{2.2} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-03-17 16:07:09 +00:00
										 |  |  | The module defines the following functions and data items: | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-01-19 19:35:18 +00:00
										 |  |  | \begin{datadesc}{accept2dyear} | 
					
						
							|  |  |  | Boolean value indicating whether two-digit year values will be | 
					
						
							|  |  |  | accepted.  This is true by default, but will be set to false if the | 
					
						
							|  |  |  | environment variable \envvar{PYTHONY2K} has been set to a non-empty | 
					
						
							|  |  |  | string.  It may also be modified at run time. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \begin{datadesc}{altzone} | 
					
						
							| 
									
										
										
										
											2000-04-05 15:06:03 +00:00
										 |  |  | The offset of the local DST timezone, in seconds west of UTC, if one | 
					
						
							| 
									
										
										
										
											2000-06-30 04:24:52 +00:00
										 |  |  | is defined.  This is negative if the local DST timezone is east of UTC | 
					
						
							|  |  |  | (as in Western Europe, including the UK).  Only use this if | 
					
						
							| 
									
										
										
										
											2000-04-05 15:06:03 +00:00
										 |  |  | \code{daylight} is nonzero. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | \begin{funcdesc}{asctime}{\optional{t}} | 
					
						
							|  |  |  | Convert a tuple or \class{struct_time} representing a time as returned | 
					
						
							|  |  |  | by \function{gmtime()} | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | or \function{localtime()} to a 24-character string of the following form: | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | \code{'Sun Jun 20 23:21:05 1993'}.  If \var{t} is not provided, the | 
					
						
							| 
									
										
										
										
											2001-10-20 04:24:09 +00:00
										 |  |  | current time as returned by \function{localtime()} is used. | 
					
						
							| 
									
										
										
										
											2002-10-30 18:17:03 +00:00
										 |  |  | Locale information is not used by \function{asctime()}. | 
					
						
							| 
									
										
										
										
											2001-10-20 04:24:09 +00:00
										 |  |  | \note{Unlike the C function of the same name, there is no trailing | 
					
						
							|  |  |  | newline.} | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | \versionchanged[Allowed \var{t} to be omitted]{2.1} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-08-23 13:26:22 +00:00
										 |  |  | \begin{funcdesc}{clock}{} | 
					
						
							| 
									
										
										
										
											2001-07-16 15:40:57 +00:00
										 |  |  | On \UNIX, return | 
					
						
							|  |  |  | the current processor time as a floating point number expressed in | 
					
						
							| 
									
										
										
										
											2000-07-16 19:01:10 +00:00
										 |  |  | seconds.  The precision, and in fact the very definition of the meaning | 
					
						
							| 
									
										
										
										
											2001-07-16 15:40:57 +00:00
										 |  |  | of ``processor time''\index{CPU time}\index{processor time}, depends | 
					
						
							|  |  |  | on that of the C function of the same name, but in any case, this is | 
					
						
							|  |  |  | the function to use for benchmarking\index{benchmarking} Python or | 
					
						
							|  |  |  | timing algorithms. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-19 01:38:03 +00:00
										 |  |  | On Windows, this function returns wall-clock seconds elapsed since the | 
					
						
							|  |  |  | first call to this function, as a floating point number, | 
					
						
							|  |  |  | based on the Win32 function \cfunction{QueryPerformanceCounter()}. | 
					
						
							|  |  |  | The resolution is typically better than one microsecond. | 
					
						
							| 
									
										
										
										
											1994-08-23 13:26:22 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-19 23:16:56 +00:00
										 |  |  | \begin{funcdesc}{ctime}{\optional{secs}} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | Convert a time expressed in seconds since the epoch to a string | 
					
						
							| 
									
										
										
										
											2004-08-03 17:58:55 +00:00
										 |  |  | representing local time. If \var{secs} is not provided or | 
					
						
							|  |  |  | \constant{None}, the current time as returned by \function{time()} is | 
					
						
							|  |  |  | used.  \code{ctime(\var{secs})} is equivalent to | 
					
						
							|  |  |  | \code{asctime(localtime(\var{secs}))}. | 
					
						
							| 
									
										
										
										
											2002-10-30 18:17:03 +00:00
										 |  |  | Locale information is not used by \function{ctime()}. | 
					
						
							| 
									
										
										
										
											2001-04-19 04:55:23 +00:00
										 |  |  | \versionchanged[Allowed \var{secs} to be omitted]{2.1} | 
					
						
							| 
									
										
										
										
											2004-08-03 17:58:55 +00:00
										 |  |  | \versionchanged[If \var{secs} is \constant{None}, the current time is | 
					
						
							| 
									
										
										
										
											2004-08-13 02:34:06 +00:00
										 |  |  |                 used]{2.4} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{datadesc}{daylight} | 
					
						
							|  |  |  | Nonzero if a DST timezone is defined. | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-19 23:16:56 +00:00
										 |  |  | \begin{funcdesc}{gmtime}{\optional{secs}} | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | Convert a time expressed in seconds since the epoch to a \class{struct_time} | 
					
						
							| 
									
										
										
										
											2001-01-19 23:16:56 +00:00
										 |  |  | in UTC in which the dst flag is always zero.  If \var{secs} is not | 
					
						
							| 
									
										
										
										
											2004-08-03 17:58:55 +00:00
										 |  |  | provided or \constant{None}, the current time as returned by | 
					
						
							|  |  |  | \function{time()} is used.  Fractions of a second are ignored.  See | 
					
						
							|  |  |  | above for a description of the \class{struct_time} object. | 
					
						
							| 
									
										
										
										
											2001-04-19 04:55:23 +00:00
										 |  |  | \versionchanged[Allowed \var{secs} to be omitted]{2.1} | 
					
						
							| 
									
										
										
										
											2004-08-03 17:58:55 +00:00
										 |  |  | \versionchanged[If \var{secs} is \constant{None}, the current time is | 
					
						
							| 
									
										
										
										
											2004-08-13 02:34:06 +00:00
										 |  |  |                 used]{2.4} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-19 23:16:56 +00:00
										 |  |  | \begin{funcdesc}{localtime}{\optional{secs}} | 
					
						
							| 
									
										
										
										
											2004-08-03 17:58:55 +00:00
										 |  |  | Like \function{gmtime()} but converts to local time.  If \var{secs} is | 
					
						
							|  |  |  | not provided or \constant{None}, the current time as returned by | 
					
						
							|  |  |  | \function{time()} is used.  The dst flag is set to \code{1} when DST | 
					
						
							|  |  |  | applies to the given time. | 
					
						
							| 
									
										
										
										
											2001-04-19 04:55:23 +00:00
										 |  |  | \versionchanged[Allowed \var{secs} to be omitted]{2.1} | 
					
						
							| 
									
										
										
										
											2004-08-03 17:58:55 +00:00
										 |  |  | \versionchanged[If \var{secs} is \constant{None}, the current time is | 
					
						
							| 
									
										
										
										
											2004-08-13 02:34:06 +00:00
										 |  |  |                 used]{2.4} | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | \begin{funcdesc}{mktime}{t} | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | This is the inverse function of \function{localtime()}.  Its argument | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | is the \class{struct_time} or full 9-tuple (since the dst flag is | 
					
						
							|  |  |  | needed; use \code{-1} as the dst flag if it is unknown) which | 
					
						
							|  |  |  | expresses the time in | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | \emph{local} time, not UTC.  It returns a floating point number, for | 
					
						
							|  |  |  | compatibility with \function{time()}.  If the input value cannot be | 
					
						
							| 
									
										
										
										
											2001-10-29 18:01:24 +00:00
										 |  |  | represented as a valid time, either \exception{OverflowError} or | 
					
						
							|  |  |  | \exception{ValueError} will be raised (which depends on whether the | 
					
						
							|  |  |  | invalid value is caught by Python or the underlying C libraries).  The | 
					
						
							| 
									
										
										
										
											2001-08-22 12:44:27 +00:00
										 |  |  | earliest date for which it can generate a time is platform-dependent. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \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. | 
					
						
							| 
									
										
										
										
											1999-08-19 14:42:54 +00:00
										 |  |  | The actual suspension time may be less than that requested because any | 
					
						
							|  |  |  | caught signal will terminate the \function{sleep()} following | 
					
						
							|  |  |  | execution of that signal's catching routine.  Also, the suspension | 
					
						
							|  |  |  | time may be longer than requested by an arbitrary amount because of | 
					
						
							|  |  |  | the scheduling of other activity in the system. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | \begin{funcdesc}{strftime}{format\optional{, t}} | 
					
						
							|  |  |  | Convert a tuple or \class{struct_time} representing a time as returned | 
					
						
							|  |  |  | by \function{gmtime()} or \function{localtime()} to a string as | 
					
						
							|  |  |  | specified by the \var{format} argument.  If \var{t} is not | 
					
						
							|  |  |  | provided, the current time as returned by \function{localtime()} is | 
					
						
							| 
									
										
										
										
											2004-03-02 04:38:10 +00:00
										 |  |  | used.  \var{format} must be a string.  \exception{ValueError} is raised | 
					
						
							|  |  |  | if any field in \var{t} is outside of the allowed range. | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | \versionchanged[Allowed \var{t} to be omitted]{2.1} | 
					
						
							| 
									
										
										
										
											2004-03-02 04:38:10 +00:00
										 |  |  | \versionchanged[\exception{ValueError} raised if a field in \var{t} is | 
					
						
							|  |  |  | out of range.]{2.4} | 
					
						
							| 
									
										
										
										
											1996-07-30 18:32:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | The following directives can be embedded in the \var{format} string. | 
					
						
							|  |  |  | They are shown without the optional field width and precision | 
					
						
							|  |  |  | specification, and are replaced by the indicated characters in the | 
					
						
							|  |  |  | \function{strftime()} result: | 
					
						
							| 
									
										
										
										
											1996-12-13 22:09:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \begin{tableiii}{c|p{24em}|c}{code}{Directive}{Meaning}{Notes} | 
					
						
							|  |  |  |   \lineiii{\%a}{Locale's abbreviated weekday name.}{} | 
					
						
							|  |  |  |   \lineiii{\%A}{Locale's full weekday name.}{} | 
					
						
							|  |  |  |   \lineiii{\%b}{Locale's abbreviated month name.}{} | 
					
						
							|  |  |  |   \lineiii{\%B}{Locale's full month name.}{} | 
					
						
							|  |  |  |   \lineiii{\%c}{Locale's appropriate date and time representation.}{} | 
					
						
							|  |  |  |   \lineiii{\%d}{Day of the month as a decimal number [01,31].}{} | 
					
						
							|  |  |  |   \lineiii{\%H}{Hour (24-hour clock) as a decimal number [00,23].}{} | 
					
						
							|  |  |  |   \lineiii{\%I}{Hour (12-hour clock) as a decimal number [01,12].}{} | 
					
						
							|  |  |  |   \lineiii{\%j}{Day of the year as a decimal number [001,366].}{} | 
					
						
							|  |  |  |   \lineiii{\%m}{Month as a decimal number [01,12].}{} | 
					
						
							|  |  |  |   \lineiii{\%M}{Minute as a decimal number [00,59].}{} | 
					
						
							| 
									
										
										
										
											2004-05-10 18:53:00 +00:00
										 |  |  |   \lineiii{\%p}{Locale's equivalent of either AM or PM.}{(1)} | 
					
						
							|  |  |  |   \lineiii{\%S}{Second as a decimal number [00,61].}{(2)} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   \lineiii{\%U}{Week number of the year (Sunday as the first day of the | 
					
						
							|  |  |  |                 week) as a decimal number [00,53].  All days in a new year | 
					
						
							| 
									
										
										
										
											2004-10-18 01:37:57 +00:00
										 |  |  |                 preceding the first Sunday are considered to be in week 0.}{(3)} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   \lineiii{\%w}{Weekday as a decimal number [0(Sunday),6].}{} | 
					
						
							|  |  |  |   \lineiii{\%W}{Week number of the year (Monday as the first day of the | 
					
						
							|  |  |  |                 week) as a decimal number [00,53].  All days in a new year | 
					
						
							| 
									
										
										
										
											2004-10-18 01:37:57 +00:00
										 |  |  |                 preceding the first Monday are considered to be in week 0.}{(3)} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   \lineiii{\%x}{Locale's appropriate date representation.}{} | 
					
						
							|  |  |  |   \lineiii{\%X}{Locale's appropriate time representation.}{} | 
					
						
							|  |  |  |   \lineiii{\%y}{Year without century as a decimal number [00,99].}{} | 
					
						
							|  |  |  |   \lineiii{\%Y}{Year with century as a decimal number.}{} | 
					
						
							| 
									
										
										
										
											2002-12-31 04:41:38 +00:00
										 |  |  |   \lineiii{\%Z}{Time zone name (no characters if no time zone exists).}{} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   \lineiii{\%\%}{A literal \character{\%} character.}{} | 
					
						
							|  |  |  | \end{tableiii} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \noindent | 
					
						
							|  |  |  | Notes: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{description} | 
					
						
							|  |  |  |   \item[(1)] | 
					
						
							| 
									
										
										
										
											2004-05-10 18:53:00 +00:00
										 |  |  |     When used with the \function{strptime()} function, the \code{\%p} | 
					
						
							|  |  |  |     directive only affects the output hour field if the \code{\%I} directive | 
					
						
							|  |  |  |     is used to parse the hour. | 
					
						
							|  |  |  |   \item[(2)] | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |     The range really is \code{0} to \code{61}; this accounts for leap | 
					
						
							|  |  |  |     seconds and the (very rare) double leap seconds. | 
					
						
							| 
									
										
										
										
											2004-10-18 01:37:57 +00:00
										 |  |  |   \item[(3)] | 
					
						
							|  |  |  |     \code{\%U} and \code{\%W} are only used in calculations when the day of the | 
					
						
							|  |  |  |     week and the year are specified. | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \end{description} | 
					
						
							| 
									
										
										
										
											1996-12-13 22:09:52 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-01-28 00:56:54 +00:00
										 |  |  | Here is an example, a format for dates compatible with that specified  | 
					
						
							| 
									
										
										
										
											2001-06-29 15:39:53 +00:00
										 |  |  | in the \rfc{2822} Internet email standard. | 
					
						
							|  |  |  | 	\footnote{The use of \code{\%Z} is now | 
					
						
							|  |  |  | 	deprecated, but the \code{\%z} escape that expands to the preferred  | 
					
						
							| 
									
										
										
										
											2001-01-28 00:56:54 +00:00
										 |  |  | 	hour/minute offset is not supported by all ANSI C libraries. Also, | 
					
						
							|  |  |  | 	a strict reading of the original 1982 \rfc{822} standard calls for | 
					
						
							|  |  |  | 	a two-digit year (\%y rather than \%Y), but practice moved to | 
					
						
							| 
									
										
										
										
											2001-06-29 15:39:53 +00:00
										 |  |  | 	4-digit years long before the year 2000.  The 4-digit year has | 
					
						
							|  |  |  |         been mandated by \rfc{2822}, which obsoletes \rfc{822}.} | 
					
						
							| 
									
										
										
										
											2001-01-28 00:56:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							| 
									
										
										
										
											2001-06-29 15:39:53 +00:00
										 |  |  | >>> from time import gmtime, strftime | 
					
						
							|  |  |  | >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
 | 
					
						
							|  |  |  | 'Thu, 28 Jun 2001 14:17:15 +0000' | 
					
						
							| 
									
										
										
										
											2001-01-28 00:56:54 +00:00
										 |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1996-12-13 22:09:52 +00:00
										 |  |  | Additional directives may be supported on certain platforms, but | 
					
						
							| 
									
										
										
										
											1999-05-26 16:15:17 +00:00
										 |  |  | only the ones listed here have a meaning standardized by ANSI C. | 
					
						
							| 
									
										
										
										
											1996-12-13 22:09:52 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | On some platforms, an optional field width and precision | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | specification can immediately follow the initial \character{\%} of a | 
					
						
							| 
									
										
										
										
											1996-12-13 22:09:52 +00:00
										 |  |  | directive in the following order; this is also not portable. | 
					
						
							| 
									
										
										
										
											1998-04-03 06:12:21 +00:00
										 |  |  | The field width is normally 2 except for \code{\%j} where it is 3. | 
					
						
							| 
									
										
										
										
											1995-09-13 17:37:49 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-06-09 16:30:56 +00:00
										 |  |  | \begin{funcdesc}{strptime}{string\optional{, format}} | 
					
						
							|  |  |  | Parse a string representing a time according to a format.  The return  | 
					
						
							| 
									
										
										
										
											2003-02-04 15:12:06 +00:00
										 |  |  | value is a \class{struct_time} as returned by \function{gmtime()} or | 
					
						
							| 
									
										
										
										
											1998-12-08 19:59:36 +00:00
										 |  |  | \function{localtime()}.  The \var{format} parameter uses the same | 
					
						
							|  |  |  | directives as those used by \function{strftime()}; it defaults to | 
					
						
							|  |  |  | \code{"\%a \%b \%d \%H:\%M:\%S \%Y"} which matches the formatting | 
					
						
							| 
									
										
										
										
											2003-07-01 05:16:08 +00:00
										 |  |  | returned by \function{ctime()}.  If \var{string} cannot be parsed | 
					
						
							|  |  |  | according to \var{format}, \exception{ValueError} is raised.  If the | 
					
						
							|  |  |  | string to be parsed has excess data after parsing, | 
					
						
							|  |  |  | \exception{ValueError} is raised.  The default values used to fill in | 
					
						
							| 
									
										
										
										
											2004-09-28 18:30:03 +00:00
										 |  |  | any missing data are \code{(1900, 1, 1, 0, 0, 0, 0, 1, -1)} . | 
					
						
							| 
									
										
										
										
											2003-07-01 05:16:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Support for the \code{\%Z} directive is based on the values contained in | 
					
						
							| 
									
										
										
										
											2003-07-01 06:29:18 +00:00
										 |  |  | \code{tzname} and whether \code{daylight} is true.  Because of this, | 
					
						
							| 
									
										
										
										
											2003-07-01 07:19:17 +00:00
										 |  |  | it is platform-specific except for recognizing UTC and GMT which are | 
					
						
							| 
									
										
										
										
											2003-07-01 05:16:08 +00:00
										 |  |  | always known (and are considered to be non-daylight savings | 
					
						
							|  |  |  | timezones). | 
					
						
							| 
									
										
										
										
											2003-07-01 06:29:18 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							| 
									
										
										
										
											1998-06-09 16:30:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-13 19:05:01 +00:00
										 |  |  | \begin{datadesc}{struct_time} | 
					
						
							|  |  |  | The type of the time value sequence returned by \function{gmtime()}, | 
					
						
							|  |  |  | \function{localtime()}, and \function{strptime()}. | 
					
						
							|  |  |  | \versionadded{2.2} | 
					
						
							|  |  |  | \end{datadesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \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 | 
					
						
							| 
									
										
										
										
											2001-08-05 15:43:04 +00:00
										 |  |  | precision than 1 second.  While this function normally returns | 
					
						
							|  |  |  | non-decreasing values, it can return a lower value than a previous | 
					
						
							|  |  |  | call if the system clock has been set back between the two calls. | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{datadesc}{timezone} | 
					
						
							| 
									
										
										
										
											2000-04-05 15:06:03 +00:00
										 |  |  | The offset of the local (non-DST) timezone, in seconds west of UTC | 
					
						
							| 
									
										
										
										
											2001-07-06 20:30:11 +00:00
										 |  |  | (negative in most of Western Europe, positive in the US, zero in the | 
					
						
							|  |  |  | UK). | 
					
						
							| 
									
										
										
										
											1994-01-02 01:22:07 +00:00
										 |  |  | \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} | 
					
						
							| 
									
										
										
										
											1996-07-30 18:32:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-06-08 13:57:19 +00:00
										 |  |  | \begin{funcdesc}{tzset}{} | 
					
						
							|  |  |  | Resets the time conversion rules used by the library routines. | 
					
						
							|  |  |  | The environment variable \envvar{TZ} specifies how this is done. | 
					
						
							|  |  |  | \versionadded{2.3} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Availability: \UNIX. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{notice} | 
					
						
							|  |  |  | Although in many cases, changing the \envvar{TZ} environment variable | 
					
						
							|  |  |  | may affect the output of functions like \function{localtime} without calling  | 
					
						
							|  |  |  | \function{tzset}, this behavior should not be relied on. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The \envvar{TZ} environment variable should contain no whitespace. | 
					
						
							|  |  |  | \end{notice} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The standard format of the \envvar{TZ} environment variable is: | 
					
						
							|  |  |  | (whitespace added for clarity) | 
					
						
							|  |  |  | \begin{itemize} | 
					
						
							|  |  |  |     \item[std offset [dst [offset] [,start[/time], end[/time]]]] | 
					
						
							|  |  |  | \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Where: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{itemize} | 
					
						
							|  |  |  |   \item[std and dst] | 
					
						
							|  |  |  |     Three or more alphanumerics giving the timezone abbreviations. | 
					
						
							|  |  |  |     These will be propogated into time.tzname | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   \item[offset] | 
					
						
							| 
									
										
										
										
											2003-09-08 18:52:18 +00:00
										 |  |  |     The offset has the form: \plusminus{} hh[:mm[:ss]]. | 
					
						
							| 
									
										
										
										
											2003-06-08 13:57:19 +00:00
										 |  |  |     This indicates the value added the local time to arrive at UTC.  | 
					
						
							|  |  |  |     If preceded by a '-', the timezone is east of the Prime  | 
					
						
							|  |  |  |     Meridian; otherwise, it is west. If no offset follows | 
					
						
							|  |  |  |     dst, summmer time is assumed to be one hour ahead of standard time. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   \item[start[/time],end[/time]] | 
					
						
							|  |  |  |     Indicates when to change to and back from DST. The format of the | 
					
						
							|  |  |  |     start and end dates are one of the following: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \begin{itemize} | 
					
						
							|  |  |  |       \item[J\var{n}] | 
					
						
							|  |  |  |         The Julian day \var{n} (1 <= \var{n} <= 365). Leap days are not  | 
					
						
							|  |  |  |         counted, so in all years February 28 is day 59 and | 
					
						
							|  |  |  |         March 1 is day 60. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     \item[\var{n}] | 
					
						
							|  |  |  |         The zero-based Julian day (0 <= \var{n} <= 365). Leap days are | 
					
						
							|  |  |  |         counted, and it is possible to refer to February 29. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       \item[M\var{m}.\var{n}.\var{d}] | 
					
						
							|  |  |  |         The \var{d}'th day (0 <= \var{d} <= 6) or week \var{n}  | 
					
						
							|  |  |  |         of month \var{m} of the year (1 <= \var{n} <= 5,  | 
					
						
							|  |  |  |         1 <= \var{m} <= 12, where week 5 means "the last \var{d} day | 
					
						
							|  |  |  |         in month \var{m}" which may occur in either the fourth or  | 
					
						
							|  |  |  |         the fifth week). Week 1 is the first week in which the  | 
					
						
							|  |  |  |         \var{d}'th day occurs. Day zero is Sunday. | 
					
						
							|  |  |  |     \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     time has the same format as offset except that no leading sign ('-' or | 
					
						
							|  |  |  |     '+') is allowed. The default, if time is not given, is 02:00:00. | 
					
						
							|  |  |  | \end{itemize} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | >>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0' | 
					
						
							|  |  |  | >>> time.tzset() | 
					
						
							|  |  |  | >>> time.strftime('%X %x %Z')
 | 
					
						
							|  |  |  | '02:07:36 05/08/03 EDT' | 
					
						
							|  |  |  | >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0' | 
					
						
							|  |  |  | >>> time.tzset() | 
					
						
							|  |  |  | >>> time.strftime('%X %x %Z')
 | 
					
						
							|  |  |  | '16:08:12 05/08/03 AEST' | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | On many Unix systems (including *BSD, Linux, Solaris, and Darwin), it | 
					
						
							|  |  |  | is more convenient to use the system's zoneinfo (\manpage{tzfile}{5})  | 
					
						
							|  |  |  | database to specify the timezone rules. To do this, set the  | 
					
						
							|  |  |  | \envvar{TZ} environment variable to the path of the required timezone  | 
					
						
							|  |  |  | datafile, relative to the root of the systems 'zoneinfo' timezone database, | 
					
						
							|  |  |  | usually located at \file{/usr/share/zoneinfo}. For example,  | 
					
						
							|  |  |  | \code{'US/Eastern'}, \code{'Australia/Melbourne'}, \code{'Egypt'} or  | 
					
						
							|  |  |  | \code{'Europe/Amsterdam'}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \begin{verbatim} | 
					
						
							|  |  |  | >>> os.environ['TZ'] = 'US/Eastern' | 
					
						
							|  |  |  | >>> time.tzset() | 
					
						
							|  |  |  | >>> time.tzname | 
					
						
							|  |  |  | ('EST', 'EDT') | 
					
						
							|  |  |  | >>> os.environ['TZ'] = 'Egypt' | 
					
						
							|  |  |  | >>> time.tzset() | 
					
						
							|  |  |  | >>> time.tzname | 
					
						
							|  |  |  | ('EET', 'EEST') | 
					
						
							|  |  |  | \end{verbatim} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | \end{funcdesc} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | \begin{seealso} | 
					
						
							| 
									
										
										
										
											2003-12-31 04:52:36 +00:00
										 |  |  |   \seemodule{datetime}{More object-oriented interface to dates and times.} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  |   \seemodule{locale}{Internationalization services.  The locale | 
					
						
							|  |  |  |                      settings can affect the return values for some of  | 
					
						
							|  |  |  |                      the functions in the \module{time} module.} | 
					
						
							| 
									
										
										
										
											2002-11-15 23:00:30 +00:00
										 |  |  |   \seemodule{calendar}{General calendar-related functions.   | 
					
						
							|  |  |  |                        \function{timegm()} is the inverse of | 
					
						
							|  |  |  |                        \function{gmtime()} from this module.} | 
					
						
							| 
									
										
										
										
											2000-04-03 20:13:55 +00:00
										 |  |  | \end{seealso} |