Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 1 | |
| 2 | :mod:`time` --- Time access and conversions |
| 3 | =========================================== |
| 4 | |
| 5 | .. module:: time |
| 6 | :synopsis: Time access and conversions. |
| 7 | |
| 8 | |
| 9 | This module provides various time-related functions. For related |
| 10 | functionality, see also the :mod:`datetime` and :mod:`calendar` modules. |
| 11 | |
| 12 | Although this module is always available, |
| 13 | not all functions are available on all platforms. Most of the functions |
| 14 | defined in this module call platform C library functions with the same name. It |
| 15 | may sometimes be helpful to consult the platform documentation, because the |
| 16 | semantics of these functions varies among platforms. |
| 17 | |
| 18 | An explanation of some terminology and conventions is in order. |
| 19 | |
| 20 | .. index:: single: epoch |
| 21 | |
| 22 | * The :dfn:`epoch` is the point where the time starts. On January 1st of that |
| 23 | year, at 0 hours, the "time since the epoch" is zero. For Unix, the epoch is |
| 24 | 1970. To find out what the epoch is, look at ``gmtime(0)``. |
| 25 | |
| 26 | .. index:: single: Year 2038 |
| 27 | |
| 28 | * The functions in this module do not handle dates and times before the epoch or |
| 29 | far in the future. The cut-off point in the future is determined by the C |
| 30 | library; for Unix, it is typically in 2038. |
| 31 | |
| 32 | .. index:: |
| 33 | single: Year 2000 |
| 34 | single: Y2K |
| 35 | |
| 36 | * **Year 2000 (Y2K) issues**: Python depends on the platform's C library, which |
| 37 | generally doesn't have year 2000 issues, since all dates and times are |
| 38 | represented internally as seconds since the epoch. Functions accepting a |
| 39 | :class:`struct_time` (see below) generally require a 4-digit year. For backward |
| 40 | compatibility, 2-digit years are supported if the module variable |
| 41 | ``accept2dyear`` is a non-zero integer; this variable is initialized to ``1`` |
| 42 | unless the environment variable :envvar:`PYTHONY2K` is set to a non-empty |
| 43 | string, in which case it is initialized to ``0``. Thus, you can set |
| 44 | :envvar:`PYTHONY2K` to a non-empty string in the environment to require 4-digit |
| 45 | years for all year input. When 2-digit years are accepted, they are converted |
| 46 | according to the POSIX or X/Open standard: values 69-99 are mapped to 1969-1999, |
| 47 | and values 0--68 are mapped to 2000--2068. Values 100--1899 are always illegal. |
| 48 | Note that this is new as of Python 1.5.2(a2); earlier versions, up to Python |
| 49 | 1.5.1 and 1.5.2a1, would add 1900 to year values below 1900. |
| 50 | |
| 51 | .. index:: |
| 52 | single: UTC |
| 53 | single: Coordinated Universal Time |
| 54 | single: Greenwich Mean Time |
| 55 | |
| 56 | * UTC is Coordinated Universal Time (formerly known as Greenwich Mean Time, or |
| 57 | GMT). The acronym UTC is not a mistake but a compromise between English and |
| 58 | French. |
| 59 | |
| 60 | .. index:: single: Daylight Saving Time |
| 61 | |
| 62 | * DST is Daylight Saving Time, an adjustment of the timezone by (usually) one |
| 63 | hour during part of the year. DST rules are magic (determined by local law) and |
| 64 | can change from year to year. The C library has a table containing the local |
| 65 | rules (often it is read from a system file for flexibility) and is the only |
| 66 | source of True Wisdom in this respect. |
| 67 | |
| 68 | * The precision of the various real-time functions may be less than suggested by |
| 69 | the units in which their value or argument is expressed. E.g. on most Unix |
| 70 | systems, the clock "ticks" only 50 or 100 times a second, and on the Mac, times |
| 71 | are only accurate to whole seconds. |
| 72 | |
| 73 | * On the other hand, the precision of :func:`time` and :func:`sleep` is better |
| 74 | than their Unix equivalents: times are expressed as floating point numbers, |
| 75 | :func:`time` returns the most accurate time available (using Unix |
| 76 | :cfunc:`gettimeofday` where available), and :func:`sleep` will accept a time |
| 77 | with a nonzero fraction (Unix :cfunc:`select` is used to implement this, where |
| 78 | available). |
| 79 | |
| 80 | * The time value as returned by :func:`gmtime`, :func:`localtime`, and |
| 81 | :func:`strptime`, and accepted by :func:`asctime`, :func:`mktime` and |
| 82 | :func:`strftime`, may be considered as a sequence of 9 integers. The return |
| 83 | values of :func:`gmtime`, :func:`localtime`, and :func:`strptime` also offer |
| 84 | attribute names for individual fields. |
| 85 | |
| 86 | +-------+-------------------+---------------------------------+ |
| 87 | | Index | Attribute | Values | |
| 88 | +=======+===================+=================================+ |
| 89 | | 0 | :attr:`tm_year` | (for example, 1993) | |
| 90 | +-------+-------------------+---------------------------------+ |
| 91 | | 1 | :attr:`tm_mon` | range [1,12] | |
| 92 | +-------+-------------------+---------------------------------+ |
| 93 | | 2 | :attr:`tm_mday` | range [1,31] | |
| 94 | +-------+-------------------+---------------------------------+ |
| 95 | | 3 | :attr:`tm_hour` | range [0,23] | |
| 96 | +-------+-------------------+---------------------------------+ |
| 97 | | 4 | :attr:`tm_min` | range [0,59] | |
| 98 | +-------+-------------------+---------------------------------+ |
| 99 | | 5 | :attr:`tm_sec` | range [0,61]; see **(1)** in | |
| 100 | | | | :func:`strftime` description | |
| 101 | +-------+-------------------+---------------------------------+ |
| 102 | | 6 | :attr:`tm_wday` | range [0,6], Monday is 0 | |
| 103 | +-------+-------------------+---------------------------------+ |
| 104 | | 7 | :attr:`tm_yday` | range [1,366] | |
| 105 | +-------+-------------------+---------------------------------+ |
| 106 | | 8 | :attr:`tm_isdst` | 0, 1 or -1; see below | |
| 107 | +-------+-------------------+---------------------------------+ |
| 108 | |
| 109 | Note that unlike the C structure, the month value is a range of 1-12, not 0-11. |
| 110 | A year value will be handled as described under "Year 2000 (Y2K) issues" above. |
| 111 | A ``-1`` argument as the daylight savings flag, passed to :func:`mktime` will |
| 112 | usually result in the correct daylight savings state to be filled in. |
| 113 | |
| 114 | When a tuple with an incorrect length is passed to a function expecting a |
| 115 | :class:`struct_time`, or having elements of the wrong type, a :exc:`TypeError` |
| 116 | is raised. |
| 117 | |
| 118 | .. versionchanged:: 2.2 |
| 119 | The time value sequence was changed from a tuple to a :class:`struct_time`, with |
| 120 | the addition of attribute names for the fields. |
| 121 | |
| 122 | |
| 123 | The module defines the following functions and data items: |
| 124 | |
| 125 | .. data:: accept2dyear |
| 126 | |
| 127 | Boolean value indicating whether two-digit year values will be accepted. This |
| 128 | is true by default, but will be set to false if the environment variable |
| 129 | :envvar:`PYTHONY2K` has been set to a non-empty string. It may also be modified |
| 130 | at run time. |
| 131 | |
| 132 | |
| 133 | .. data:: altzone |
| 134 | |
| 135 | The offset of the local DST timezone, in seconds west of UTC, if one is defined. |
| 136 | This is negative if the local DST timezone is east of UTC (as in Western Europe, |
| 137 | including the UK). Only use this if ``daylight`` is nonzero. |
| 138 | |
| 139 | |
| 140 | .. function:: asctime([t]) |
| 141 | |
| 142 | Convert a tuple or :class:`struct_time` representing a time as returned by |
| 143 | :func:`gmtime` or :func:`localtime` to a 24-character string of the following |
| 144 | form: ``'Sun Jun 20 23:21:05 1993'``. If *t* is not provided, the current time |
| 145 | as returned by :func:`localtime` is used. Locale information is not used by |
| 146 | :func:`asctime`. |
| 147 | |
| 148 | .. note:: |
| 149 | |
| 150 | Unlike the C function of the same name, there is no trailing newline. |
| 151 | |
| 152 | .. versionchanged:: 2.1 |
| 153 | Allowed *t* to be omitted. |
| 154 | |
| 155 | |
| 156 | .. function:: clock() |
| 157 | |
| 158 | .. index:: |
| 159 | single: CPU time |
| 160 | single: processor time |
| 161 | single: benchmarking |
| 162 | |
| 163 | On Unix, return the current processor time as a floating point number expressed |
| 164 | in seconds. The precision, and in fact the very definition of the meaning of |
| 165 | "processor time", depends on that of the C function of the same name, but in any |
| 166 | case, this is the function to use for benchmarking Python or timing algorithms. |
| 167 | |
| 168 | On Windows, this function returns wall-clock seconds elapsed since the first |
| 169 | call to this function, as a floating point number, based on the Win32 function |
| 170 | :cfunc:`QueryPerformanceCounter`. The resolution is typically better than one |
| 171 | microsecond. |
| 172 | |
| 173 | |
| 174 | .. function:: ctime([secs]) |
| 175 | |
| 176 | Convert a time expressed in seconds since the epoch to a string representing |
| 177 | local time. If *secs* is not provided or :const:`None`, the current time as |
| 178 | returned by :func:`time` is used. ``ctime(secs)`` is equivalent to |
| 179 | ``asctime(localtime(secs))``. Locale information is not used by :func:`ctime`. |
| 180 | |
| 181 | .. versionchanged:: 2.1 |
| 182 | Allowed *secs* to be omitted. |
| 183 | |
| 184 | .. versionchanged:: 2.4 |
| 185 | If *secs* is :const:`None`, the current time is used. |
| 186 | |
| 187 | |
| 188 | .. data:: daylight |
| 189 | |
| 190 | Nonzero if a DST timezone is defined. |
| 191 | |
| 192 | |
| 193 | .. function:: gmtime([secs]) |
| 194 | |
| 195 | Convert a time expressed in seconds since the epoch to a :class:`struct_time` in |
| 196 | UTC in which the dst flag is always zero. If *secs* is not provided or |
| 197 | :const:`None`, the current time as returned by :func:`time` is used. Fractions |
| 198 | of a second are ignored. See above for a description of the |
| 199 | :class:`struct_time` object. See :func:`calendar.timegm` for the inverse of this |
| 200 | function. |
| 201 | |
| 202 | .. versionchanged:: 2.1 |
| 203 | Allowed *secs* to be omitted. |
| 204 | |
| 205 | .. versionchanged:: 2.4 |
| 206 | If *secs* is :const:`None`, the current time is used. |
| 207 | |
| 208 | |
| 209 | .. function:: localtime([secs]) |
| 210 | |
| 211 | Like :func:`gmtime` but converts to local time. If *secs* is not provided or |
| 212 | :const:`None`, the current time as returned by :func:`time` is used. The dst |
| 213 | flag is set to ``1`` when DST applies to the given time. |
| 214 | |
| 215 | .. versionchanged:: 2.1 |
| 216 | Allowed *secs* to be omitted. |
| 217 | |
| 218 | .. versionchanged:: 2.4 |
| 219 | If *secs* is :const:`None`, the current time is used. |
| 220 | |
| 221 | |
| 222 | .. function:: mktime(t) |
| 223 | |
| 224 | This is the inverse function of :func:`localtime`. Its argument is the |
| 225 | :class:`struct_time` or full 9-tuple (since the dst flag is needed; use ``-1`` |
| 226 | as the dst flag if it is unknown) which expresses the time in *local* time, not |
| 227 | UTC. It returns a floating point number, for compatibility with :func:`time`. |
| 228 | If the input value cannot be represented as a valid time, either |
| 229 | :exc:`OverflowError` or :exc:`ValueError` will be raised (which depends on |
| 230 | whether the invalid value is caught by Python or the underlying C libraries). |
| 231 | The earliest date for which it can generate a time is platform-dependent. |
| 232 | |
| 233 | |
| 234 | .. function:: sleep(secs) |
| 235 | |
| 236 | Suspend execution for the given number of seconds. The argument may be a |
| 237 | floating point number to indicate a more precise sleep time. The actual |
| 238 | suspension time may be less than that requested because any caught signal will |
| 239 | terminate the :func:`sleep` following execution of that signal's catching |
| 240 | routine. Also, the suspension time may be longer than requested by an arbitrary |
| 241 | amount because of the scheduling of other activity in the system. |
| 242 | |
| 243 | |
| 244 | .. function:: strftime(format[, t]) |
| 245 | |
| 246 | Convert a tuple or :class:`struct_time` representing a time as returned by |
| 247 | :func:`gmtime` or :func:`localtime` to a string as specified by the *format* |
| 248 | argument. If *t* is not provided, the current time as returned by |
| 249 | :func:`localtime` is used. *format* must be a string. :exc:`ValueError` is |
| 250 | raised if any field in *t* is outside of the allowed range. |
| 251 | |
| 252 | .. versionchanged:: 2.1 |
| 253 | Allowed *t* to be omitted. |
| 254 | |
| 255 | .. versionchanged:: 2.4 |
| 256 | :exc:`ValueError` raised if a field in *t* is out of range. |
| 257 | |
| 258 | .. versionchanged:: 2.5 |
| 259 | 0 is now a legal argument for any position in the time tuple; if it is normally |
| 260 | illegal the value is forced to a correct one.. |
| 261 | |
| 262 | The following directives can be embedded in the *format* string. They are shown |
| 263 | without the optional field width and precision specification, and are replaced |
| 264 | by the indicated characters in the :func:`strftime` result: |
| 265 | |
| 266 | +-----------+--------------------------------+-------+ |
| 267 | | Directive | Meaning | Notes | |
| 268 | +===========+================================+=======+ |
| 269 | | ``%a`` | Locale's abbreviated weekday | | |
| 270 | | | name. | | |
| 271 | +-----------+--------------------------------+-------+ |
| 272 | | ``%A`` | Locale's full weekday name. | | |
| 273 | +-----------+--------------------------------+-------+ |
| 274 | | ``%b`` | Locale's abbreviated month | | |
| 275 | | | name. | | |
| 276 | +-----------+--------------------------------+-------+ |
| 277 | | ``%B`` | Locale's full month name. | | |
| 278 | +-----------+--------------------------------+-------+ |
| 279 | | ``%c`` | Locale's appropriate date and | | |
| 280 | | | time representation. | | |
| 281 | +-----------+--------------------------------+-------+ |
| 282 | | ``%d`` | Day of the month as a decimal | | |
| 283 | | | number [01,31]. | | |
| 284 | +-----------+--------------------------------+-------+ |
| 285 | | ``%H`` | Hour (24-hour clock) as a | | |
| 286 | | | decimal number [00,23]. | | |
| 287 | +-----------+--------------------------------+-------+ |
| 288 | | ``%I`` | Hour (12-hour clock) as a | | |
| 289 | | | decimal number [01,12]. | | |
| 290 | +-----------+--------------------------------+-------+ |
| 291 | | ``%j`` | Day of the year as a decimal | | |
| 292 | | | number [001,366]. | | |
| 293 | +-----------+--------------------------------+-------+ |
| 294 | | ``%m`` | Month as a decimal number | | |
| 295 | | | [01,12]. | | |
| 296 | +-----------+--------------------------------+-------+ |
| 297 | | ``%M`` | Minute as a decimal number | | |
| 298 | | | [00,59]. | | |
| 299 | +-----------+--------------------------------+-------+ |
| 300 | | ``%p`` | Locale's equivalent of either | \(1) | |
| 301 | | | AM or PM. | | |
| 302 | +-----------+--------------------------------+-------+ |
| 303 | | ``%S`` | Second as a decimal number | \(2) | |
| 304 | | | [00,61]. | | |
| 305 | +-----------+--------------------------------+-------+ |
| 306 | | ``%U`` | Week number of the year | \(3) | |
| 307 | | | (Sunday as the first day of | | |
| 308 | | | the week) as a decimal number | | |
| 309 | | | [00,53]. All days in a new | | |
| 310 | | | year preceding the first | | |
| 311 | | | Sunday are considered to be in | | |
| 312 | | | week 0. | | |
| 313 | +-----------+--------------------------------+-------+ |
| 314 | | ``%w`` | Weekday as a decimal number | | |
| 315 | | | [0(Sunday),6]. | | |
| 316 | +-----------+--------------------------------+-------+ |
| 317 | | ``%W`` | Week number of the year | \(3) | |
| 318 | | | (Monday as the first day of | | |
| 319 | | | the week) as a decimal number | | |
| 320 | | | [00,53]. All days in a new | | |
| 321 | | | year preceding the first | | |
| 322 | | | Monday are considered to be in | | |
| 323 | | | week 0. | | |
| 324 | +-----------+--------------------------------+-------+ |
| 325 | | ``%x`` | Locale's appropriate date | | |
| 326 | | | representation. | | |
| 327 | +-----------+--------------------------------+-------+ |
| 328 | | ``%X`` | Locale's appropriate time | | |
| 329 | | | representation. | | |
| 330 | +-----------+--------------------------------+-------+ |
| 331 | | ``%y`` | Year without century as a | | |
| 332 | | | decimal number [00,99]. | | |
| 333 | +-----------+--------------------------------+-------+ |
| 334 | | ``%Y`` | Year with century as a decimal | | |
| 335 | | | number. | | |
| 336 | +-----------+--------------------------------+-------+ |
| 337 | | ``%Z`` | Time zone name (no characters | | |
| 338 | | | if no time zone exists). | | |
| 339 | +-----------+--------------------------------+-------+ |
| 340 | | ``%%`` | A literal ``'%'`` character. | | |
| 341 | +-----------+--------------------------------+-------+ |
| 342 | |
| 343 | Notes: |
| 344 | |
| 345 | (1) |
| 346 | When used with the :func:`strptime` function, the ``%p`` directive only affects |
| 347 | the output hour field if the ``%I`` directive is used to parse the hour. |
| 348 | |
| 349 | (2) |
| 350 | The range really is ``0`` to ``61``; this accounts for leap seconds and the |
| 351 | (very rare) double leap seconds. |
| 352 | |
| 353 | (3) |
| 354 | When used with the :func:`strptime` function, ``%U`` and ``%W`` are only used in |
| 355 | calculations when the day of the week and the year are specified. |
| 356 | |
| 357 | Here is an example, a format for dates compatible with that specified in the |
| 358 | :rfc:`2822` Internet email standard. [#]_ :: |
| 359 | |
| 360 | >>> from time import gmtime, strftime |
| 361 | >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) |
| 362 | 'Thu, 28 Jun 2001 14:17:15 +0000' |
| 363 | |
| 364 | Additional directives may be supported on certain platforms, but only the ones |
| 365 | listed here have a meaning standardized by ANSI C. |
| 366 | |
| 367 | On some platforms, an optional field width and precision specification can |
| 368 | immediately follow the initial ``'%'`` of a directive in the following order; |
| 369 | this is also not portable. The field width is normally 2 except for ``%j`` where |
| 370 | it is 3. |
| 371 | |
| 372 | |
| 373 | .. function:: strptime(string[, format]) |
| 374 | |
| 375 | Parse a string representing a time according to a format. The return value is |
| 376 | a :class:`struct_time` as returned by :func:`gmtime` or :func:`localtime`. |
| 377 | |
| 378 | The *format* parameter uses the same directives as those used by |
| 379 | :func:`strftime`; it defaults to ``"%a %b %d %H:%M:%S %Y"`` which matches the |
| 380 | formatting returned by :func:`ctime`. If *string* cannot be parsed according to |
| 381 | *format*, or if it has excess data after parsing, :exc:`ValueError` is raised. |
| 382 | The default values used to fill in any missing data when more accurate values |
| 383 | cannot be inferred are ``(1900, 1, 1, 0, 0, 0, 0, 1, -1)``. |
| 384 | |
Georg Brandl | e8f1b00 | 2008-03-22 22:04:10 +0000 | [diff] [blame] | 385 | For example: |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 386 | |
| 387 | >>> import time |
Georg Brandl | e8f1b00 | 2008-03-22 22:04:10 +0000 | [diff] [blame] | 388 | >>> time.strptime("30 Nov 00", "%d %b %y") # doctest: +NORMALIZE_WHITESPACE |
| 389 | time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, |
| 390 | tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1) |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +0000 | [diff] [blame] | 391 | |
| 392 | Support for the ``%Z`` directive is based on the values contained in ``tzname`` |
| 393 | and whether ``daylight`` is true. Because of this, it is platform-specific |
| 394 | except for recognizing UTC and GMT which are always known (and are considered to |
| 395 | be non-daylight savings timezones). |
| 396 | |
| 397 | Only the directives specified in the documentation are supported. Because |
| 398 | ``strftime()`` is implemented per platform it can sometimes offer more |
| 399 | directives than those listed. But ``strptime()`` is independent of any platform |
| 400 | and thus does not necessarily support all directives available that are not |
| 401 | documented as supported. |
| 402 | |
| 403 | |
| 404 | .. data:: struct_time |
| 405 | |
| 406 | The type of the time value sequence returned by :func:`gmtime`, |
| 407 | :func:`localtime`, and :func:`strptime`. |
| 408 | |
| 409 | .. versionadded:: 2.2 |
| 410 | |
| 411 | |
| 412 | .. function:: time() |
| 413 | |
| 414 | Return the time as a floating point number expressed in seconds since the epoch, |
| 415 | in UTC. Note that even though the time is always returned as a floating point |
| 416 | number, not all systems provide time with a better precision than 1 second. |
| 417 | While this function normally returns non-decreasing values, it can return a |
| 418 | lower value than a previous call if the system clock has been set back between |
| 419 | the two calls. |
| 420 | |
| 421 | |
| 422 | .. data:: timezone |
| 423 | |
| 424 | The offset of the local (non-DST) timezone, in seconds west of UTC (negative in |
| 425 | most of Western Europe, positive in the US, zero in the UK). |
| 426 | |
| 427 | |
| 428 | .. data:: tzname |
| 429 | |
| 430 | A tuple of two strings: the first is the name of the local non-DST timezone, the |
| 431 | second is the name of the local DST timezone. If no DST timezone is defined, |
| 432 | the second string should not be used. |
| 433 | |
| 434 | |
| 435 | .. function:: tzset() |
| 436 | |
| 437 | Resets the time conversion rules used by the library routines. The environment |
| 438 | variable :envvar:`TZ` specifies how this is done. |
| 439 | |
| 440 | .. versionadded:: 2.3 |
| 441 | |
| 442 | Availability: Unix. |
| 443 | |
| 444 | .. note:: |
| 445 | |
| 446 | Although in many cases, changing the :envvar:`TZ` environment variable may |
| 447 | affect the output of functions like :func:`localtime` without calling |
| 448 | :func:`tzset`, this behavior should not be relied on. |
| 449 | |
| 450 | The :envvar:`TZ` environment variable should contain no whitespace. |
| 451 | |
| 452 | The standard format of the :envvar:`TZ` environment variable is (whitespace |
| 453 | added for clarity):: |
| 454 | |
| 455 | std offset [dst [offset [,start[/time], end[/time]]]] |
| 456 | |
| 457 | Where the components are: |
| 458 | |
| 459 | ``std`` and ``dst`` |
| 460 | Three or more alphanumerics giving the timezone abbreviations. These will be |
| 461 | propagated into time.tzname |
| 462 | |
| 463 | ``offset`` |
| 464 | The offset has the form: ``± hh[:mm[:ss]]``. This indicates the value |
| 465 | added the local time to arrive at UTC. If preceded by a '-', the timezone |
| 466 | is east of the Prime Meridian; otherwise, it is west. If no offset follows |
| 467 | dst, summer time is assumed to be one hour ahead of standard time. |
| 468 | |
| 469 | ``start[/time], end[/time]`` |
| 470 | Indicates when to change to and back from DST. The format of the |
| 471 | start and end dates are one of the following: |
| 472 | |
| 473 | :samp:`J{n}` |
| 474 | The Julian day *n* (1 <= *n* <= 365). Leap days are not counted, so in |
| 475 | all years February 28 is day 59 and March 1 is day 60. |
| 476 | |
| 477 | :samp:`{n}` |
| 478 | The zero-based Julian day (0 <= *n* <= 365). Leap days are counted, and |
| 479 | it is possible to refer to February 29. |
| 480 | |
| 481 | :samp:`M{m}.{n}.{d}` |
| 482 | The *d*'th day (0 <= *d* <= 6) or week *n* of month *m* of the year (1 |
| 483 | <= *n* <= 5, 1 <= *m* <= 12, where week 5 means "the last *d* day in |
| 484 | month *m*" which may occur in either the fourth or the fifth |
| 485 | week). Week 1 is the first week in which the *d*'th day occurs. Day |
| 486 | zero is Sunday. |
| 487 | |
| 488 | ``time`` has the same format as ``offset`` except that no leading sign |
| 489 | ('-' or '+') is allowed. The default, if time is not given, is 02:00:00. |
| 490 | |
| 491 | :: |
| 492 | |
| 493 | >>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0' |
| 494 | >>> time.tzset() |
| 495 | >>> time.strftime('%X %x %Z') |
| 496 | '02:07:36 05/08/03 EDT' |
| 497 | >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0' |
| 498 | >>> time.tzset() |
| 499 | >>> time.strftime('%X %x %Z') |
| 500 | '16:08:12 05/08/03 AEST' |
| 501 | |
| 502 | On many Unix systems (including \*BSD, Linux, Solaris, and Darwin), it is more |
| 503 | convenient to use the system's zoneinfo (:manpage:`tzfile(5)`) database to |
| 504 | specify the timezone rules. To do this, set the :envvar:`TZ` environment |
| 505 | variable to the path of the required timezone datafile, relative to the root of |
| 506 | the systems 'zoneinfo' timezone database, usually located at |
| 507 | :file:`/usr/share/zoneinfo`. For example, ``'US/Eastern'``, |
| 508 | ``'Australia/Melbourne'``, ``'Egypt'`` or ``'Europe/Amsterdam'``. :: |
| 509 | |
| 510 | >>> os.environ['TZ'] = 'US/Eastern' |
| 511 | >>> time.tzset() |
| 512 | >>> time.tzname |
| 513 | ('EST', 'EDT') |
| 514 | >>> os.environ['TZ'] = 'Egypt' |
| 515 | >>> time.tzset() |
| 516 | >>> time.tzname |
| 517 | ('EET', 'EEST') |
| 518 | |
| 519 | |
| 520 | .. seealso:: |
| 521 | |
| 522 | Module :mod:`datetime` |
| 523 | More object-oriented interface to dates and times. |
| 524 | |
| 525 | Module :mod:`locale` |
| 526 | Internationalization services. The locale settings can affect the return values |
| 527 | for some of the functions in the :mod:`time` module. |
| 528 | |
| 529 | Module :mod:`calendar` |
| 530 | General calendar-related functions. :func:`timegm` is the inverse of |
| 531 | :func:`gmtime` from this module. |
| 532 | |
| 533 | .. rubric:: Footnotes |
| 534 | |
| 535 | .. [#] The use of ``%Z`` is now deprecated, but the ``%z`` escape that expands to the |
| 536 | preferred hour/minute offset is not supported by all ANSI C libraries. Also, a |
| 537 | strict reading of the original 1982 :rfc:`822` standard calls for a two-digit |
| 538 | year (%y rather than %Y), but practice moved to 4-digit years long before the |
| 539 | year 2000. The 4-digit year has been mandated by :rfc:`2822`, which obsoletes |
| 540 | :rfc:`822`. |
| 541 | |