~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-3.5.1-docs-html/_sources/library/time.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
:mod:`time` --- Time access and conversions
2
 
===========================================
3
 
 
4
 
.. module:: time
5
 
   :synopsis: Time access and conversions.
6
 
 
7
 
 
8
 
This module provides various time-related functions. For related
9
 
functionality, see also the :mod:`datetime` and :mod:`calendar` modules.
10
 
 
11
 
Although this module is always available,
12
 
not all functions are available on all platforms.  Most of the functions
13
 
defined in this module call platform C library functions with the same name.  It
14
 
may sometimes be helpful to consult the platform documentation, because the
15
 
semantics of these functions varies among platforms.
16
 
 
17
 
An explanation of some terminology and conventions is in order.
18
 
 
19
 
.. index:: single: epoch
20
 
 
21
 
* The :dfn:`epoch` is the point where the time starts.  On January 1st of that
22
 
  year, at 0 hours, the "time since the epoch" is zero.  For Unix, the epoch is
23
 
  1970.  To find out what the epoch is, look at ``gmtime(0)``.
24
 
 
25
 
.. index:: single: Year 2038
26
 
 
27
 
* The functions in this module may not handle dates and times before the epoch or
28
 
  far in the future.  The cut-off point in the future is determined by the C
29
 
  library; for 32-bit systems, it is typically in 2038.
30
 
 
31
 
.. index::
32
 
   single: Year 2000
33
 
   single: Y2K
34
 
 
35
 
.. _time-y2kissues:
36
 
 
37
 
* **Year 2000 (Y2K) issues**: Python depends on the platform's C library, which
38
 
  generally doesn't have year 2000 issues, since all dates and times are
39
 
  represented internally as seconds since the epoch.  Function :func:`strptime`
40
 
  can parse 2-digit years when given ``%y`` format code.  When 2-digit years are
41
 
  parsed, they are converted according to the POSIX and ISO C standards: values
42
 
  69--99 are mapped to 1969--1999, and values 0--68 are mapped to 2000--2068.
43
 
 
44
 
.. index::
45
 
   single: UTC
46
 
   single: Coordinated Universal Time
47
 
   single: Greenwich Mean Time
48
 
 
49
 
* UTC is Coordinated Universal Time (formerly known as Greenwich Mean Time, or
50
 
  GMT).  The acronym UTC is not a mistake but a compromise between English and
51
 
  French.
52
 
 
53
 
.. index:: single: Daylight Saving Time
54
 
 
55
 
* DST is Daylight Saving Time, an adjustment of the timezone by (usually) one
56
 
  hour during part of the year.  DST rules are magic (determined by local law) and
57
 
  can change from year to year.  The C library has a table containing the local
58
 
  rules (often it is read from a system file for flexibility) and is the only
59
 
  source of True Wisdom in this respect.
60
 
 
61
 
* The precision of the various real-time functions may be less than suggested by
62
 
  the units in which their value or argument is expressed. E.g. on most Unix
63
 
  systems, the clock "ticks" only 50 or 100 times a second.
64
 
 
65
 
* On the other hand, the precision of :func:`.time` and :func:`sleep` is better
66
 
  than their Unix equivalents: times are expressed as floating point numbers,
67
 
  :func:`.time` returns the most accurate time available (using Unix
68
 
  :c:func:`gettimeofday` where available), and :func:`sleep` will accept a time
69
 
  with a nonzero fraction (Unix :c:func:`select` is used to implement this, where
70
 
  available).
71
 
 
72
 
* The time value as returned by :func:`gmtime`, :func:`localtime`, and
73
 
  :func:`strptime`, and accepted by :func:`asctime`, :func:`mktime` and
74
 
  :func:`strftime`, is a sequence of 9 integers.  The return values of
75
 
  :func:`gmtime`, :func:`localtime`, and :func:`strptime` also offer attribute
76
 
  names for individual fields.
77
 
 
78
 
  See :class:`struct_time` for a description of these objects.
79
 
 
80
 
  .. versionchanged:: 3.3
81
 
     The :class:`struct_time` type was extended to provide the :attr:`tm_gmtoff`
82
 
     and :attr:`tm_zone` attributes when platform supports corresponding
83
 
     ``struct tm`` members.
84
 
 
85
 
* Use the following functions to convert between time representations:
86
 
 
87
 
  +-------------------------+-------------------------+-------------------------+
88
 
  | From                    | To                      | Use                     |
89
 
  +=========================+=========================+=========================+
90
 
  | seconds since the epoch | :class:`struct_time` in | :func:`gmtime`          |
91
 
  |                         | UTC                     |                         |
92
 
  +-------------------------+-------------------------+-------------------------+
93
 
  | seconds since the epoch | :class:`struct_time` in | :func:`localtime`       |
94
 
  |                         | local time              |                         |
95
 
  +-------------------------+-------------------------+-------------------------+
96
 
  | :class:`struct_time` in | seconds since the epoch | :func:`calendar.timegm` |
97
 
  | UTC                     |                         |                         |
98
 
  +-------------------------+-------------------------+-------------------------+
99
 
  | :class:`struct_time` in | seconds since the epoch | :func:`mktime`          |
100
 
  | local time              |                         |                         |
101
 
  +-------------------------+-------------------------+-------------------------+
102
 
 
103
 
 
104
 
The module defines the following functions and data items:
105
 
 
106
 
.. data:: altzone
107
 
 
108
 
   The offset of the local DST timezone, in seconds west of UTC, if one is defined.
109
 
   This is negative if the local DST timezone is east of UTC (as in Western Europe,
110
 
   including the UK).  Only use this if ``daylight`` is nonzero.
111
 
 
112
 
 
113
 
.. function:: asctime([t])
114
 
 
115
 
   Convert a tuple or :class:`struct_time` representing a time as returned by
116
 
   :func:`gmtime` or :func:`localtime` to a string of the following
117
 
   form: ``'Sun Jun 20 23:21:05 1993'``.  If *t* is not provided, the current time
118
 
   as returned by :func:`localtime` is used. Locale information is not used by
119
 
   :func:`asctime`.
120
 
 
121
 
   .. note::
122
 
 
123
 
      Unlike the C function of the same name, :func:`asctime` does not add a
124
 
      trailing newline.
125
 
 
126
 
 
127
 
.. function:: clock()
128
 
 
129
 
   .. index::
130
 
      single: CPU time
131
 
      single: processor time
132
 
      single: benchmarking
133
 
 
134
 
   On Unix, return the current processor time as a floating point number expressed
135
 
   in seconds.  The precision, and in fact the very definition of the meaning of
136
 
   "processor time", depends on that of the C function of the same name.
137
 
 
138
 
   On Windows, this function returns wall-clock seconds elapsed since the first
139
 
   call to this function, as a floating point number, based on the Win32 function
140
 
   :c:func:`QueryPerformanceCounter`. The resolution is typically better than one
141
 
   microsecond.
142
 
 
143
 
   .. deprecated:: 3.3
144
 
      The behaviour of this function depends on the platform: use
145
 
      :func:`perf_counter` or :func:`process_time` instead, depending on your
146
 
      requirements, to have a well defined behaviour.
147
 
 
148
 
 
149
 
.. function:: clock_getres(clk_id)
150
 
 
151
 
   Return the resolution (precision) of the specified clock *clk_id*.
152
 
 
153
 
   Availability: Unix.
154
 
 
155
 
   .. versionadded:: 3.3
156
 
 
157
 
 
158
 
.. function:: clock_gettime(clk_id)
159
 
 
160
 
   Return the time of the specified clock *clk_id*.
161
 
 
162
 
   Availability: Unix.
163
 
 
164
 
   .. versionadded:: 3.3
165
 
 
166
 
 
167
 
.. function:: clock_settime(clk_id, time)
168
 
 
169
 
   Set the time of the specified clock *clk_id*.
170
 
 
171
 
   Availability: Unix.
172
 
 
173
 
   .. versionadded:: 3.3
174
 
 
175
 
 
176
 
.. data:: CLOCK_HIGHRES
177
 
 
178
 
   The Solaris OS has a CLOCK_HIGHRES timer that attempts to use an optimal
179
 
   hardware source, and may give close to nanosecond resolution.  CLOCK_HIGHRES
180
 
   is the nonadjustable, high-resolution clock.
181
 
 
182
 
   Availability: Solaris.
183
 
 
184
 
   .. versionadded:: 3.3
185
 
 
186
 
 
187
 
.. data:: CLOCK_MONOTONIC
188
 
 
189
 
   Clock that cannot be set and represents monotonic time since some unspecified
190
 
   starting point.
191
 
 
192
 
   Availability: Unix.
193
 
 
194
 
   .. versionadded:: 3.3
195
 
 
196
 
 
197
 
.. data:: CLOCK_MONOTONIC_RAW
198
 
 
199
 
   Similar to :data:`CLOCK_MONOTONIC`, but provides access to a raw
200
 
   hardware-based time that is not subject to NTP adjustments.
201
 
 
202
 
   Availability: Linux 2.6.28 or later.
203
 
 
204
 
   .. versionadded:: 3.3
205
 
 
206
 
 
207
 
.. data:: CLOCK_PROCESS_CPUTIME_ID
208
 
 
209
 
   High-resolution per-process timer from the CPU.
210
 
 
211
 
   Availability: Unix.
212
 
 
213
 
   .. versionadded:: 3.3
214
 
 
215
 
 
216
 
.. data:: CLOCK_REALTIME
217
 
 
218
 
   System-wide real-time clock.  Setting this clock requires appropriate
219
 
   privileges.
220
 
 
221
 
   Availability: Unix.
222
 
 
223
 
   .. versionadded:: 3.3
224
 
 
225
 
 
226
 
.. data:: CLOCK_THREAD_CPUTIME_ID
227
 
 
228
 
   Thread-specific CPU-time clock.
229
 
 
230
 
   Availability: Unix.
231
 
 
232
 
   .. versionadded:: 3.3
233
 
 
234
 
 
235
 
.. function:: ctime([secs])
236
 
 
237
 
   Convert a time expressed in seconds since the epoch to a string representing
238
 
   local time. If *secs* is not provided or :const:`None`, the current time as
239
 
   returned by :func:`.time` is used.  ``ctime(secs)`` is equivalent to
240
 
   ``asctime(localtime(secs))``. Locale information is not used by :func:`ctime`.
241
 
 
242
 
 
243
 
.. data:: daylight
244
 
 
245
 
   Nonzero if a DST timezone is defined.
246
 
 
247
 
 
248
 
.. function:: get_clock_info(name)
249
 
 
250
 
   Get information on the specified clock as a namespace object.
251
 
   Supported clock names and the corresponding functions to read their value
252
 
   are:
253
 
 
254
 
   * ``'clock'``: :func:`time.clock`
255
 
   * ``'monotonic'``: :func:`time.monotonic`
256
 
   * ``'perf_counter'``: :func:`time.perf_counter`
257
 
   * ``'process_time'``: :func:`time.process_time`
258
 
   * ``'time'``: :func:`time.time`
259
 
 
260
 
   The result has the following attributes:
261
 
 
262
 
   - *adjustable*: ``True`` if the clock can be changed automatically (e.g. by
263
 
     a NTP daemon) or manually by the system administrator, ``False`` otherwise
264
 
   - *implementation*: The name of the underlying C function used to get
265
 
     the clock value
266
 
   - *monotonic*: ``True`` if the clock cannot go backward,
267
 
     ``False`` otherwise
268
 
   - *resolution*: The resolution of the clock in seconds (:class:`float`)
269
 
 
270
 
   .. versionadded:: 3.3
271
 
 
272
 
 
273
 
.. function:: gmtime([secs])
274
 
 
275
 
   Convert a time expressed in seconds since the epoch to a :class:`struct_time` in
276
 
   UTC in which the dst flag is always zero.  If *secs* is not provided or
277
 
   :const:`None`, the current time as returned by :func:`.time` is used.  Fractions
278
 
   of a second are ignored.  See above for a description of the
279
 
   :class:`struct_time` object. See :func:`calendar.timegm` for the inverse of this
280
 
   function.
281
 
 
282
 
 
283
 
.. function:: localtime([secs])
284
 
 
285
 
   Like :func:`gmtime` but converts to local time.  If *secs* is not provided or
286
 
   :const:`None`, the current time as returned by :func:`.time` is used.  The dst
287
 
   flag is set to ``1`` when DST applies to the given time.
288
 
 
289
 
 
290
 
.. function:: mktime(t)
291
 
 
292
 
   This is the inverse function of :func:`localtime`.  Its argument is the
293
 
   :class:`struct_time` or full 9-tuple (since the dst flag is needed; use ``-1``
294
 
   as the dst flag if it is unknown) which expresses the time in *local* time, not
295
 
   UTC.  It returns a floating point number, for compatibility with :func:`.time`.
296
 
   If the input value cannot be represented as a valid time, either
297
 
   :exc:`OverflowError` or :exc:`ValueError` will be raised (which depends on
298
 
   whether the invalid value is caught by Python or the underlying C libraries).
299
 
   The earliest date for which it can generate a time is platform-dependent.
300
 
 
301
 
 
302
 
.. function:: monotonic()
303
 
 
304
 
   Return the value (in fractional seconds) of a monotonic clock, i.e. a clock
305
 
   that cannot go backwards.  The clock is not affected by system clock updates.
306
 
   The reference point of the returned value is undefined, so that only the
307
 
   difference between the results of consecutive calls is valid.
308
 
 
309
 
   On Windows versions older than Vista, :func:`monotonic` detects
310
 
   :c:func:`GetTickCount` integer overflow (32 bits, roll-over after 49.7 days).
311
 
   It increases an internal epoch (reference time) by 2\ :sup:`32` each time
312
 
   that an overflow is detected.  The epoch is stored in the process-local state
313
 
   and so the value of :func:`monotonic` may be different in two Python
314
 
   processes running for more than 49 days. On more recent versions of Windows
315
 
   and on other operating systems, :func:`monotonic` is system-wide.
316
 
 
317
 
   .. versionadded:: 3.3
318
 
   .. versionchanged:: 3.5
319
 
      The function is now always available.
320
 
 
321
 
 
322
 
.. function:: perf_counter()
323
 
 
324
 
   Return the value (in fractional seconds) of a performance counter, i.e. a
325
 
   clock with the highest available resolution to measure a short duration.  It
326
 
   does include time elapsed during sleep and is system-wide.  The reference
327
 
   point of the returned value is undefined, so that only the difference between
328
 
   the results of consecutive calls is valid.
329
 
 
330
 
   .. versionadded:: 3.3
331
 
 
332
 
 
333
 
.. function:: process_time()
334
 
 
335
 
   Return the value (in fractional seconds) of the sum of the system and user
336
 
   CPU time of the current process.  It does not include time elapsed during
337
 
   sleep.  It is process-wide by definition.  The reference point of the
338
 
   returned value is undefined, so that only the difference between the results
339
 
   of consecutive calls is valid.
340
 
 
341
 
   .. versionadded:: 3.3
342
 
 
343
 
.. function:: sleep(secs)
344
 
 
345
 
   Suspend execution of the calling thread for the given number of seconds.
346
 
   The argument may be a floating point number to indicate a more precise sleep
347
 
   time. The actual suspension time may be less than that requested because any
348
 
   caught signal will terminate the :func:`sleep` following execution of that
349
 
   signal's catching routine.  Also, the suspension time may be longer than
350
 
   requested by an arbitrary amount because of the scheduling of other activity
351
 
   in the system.
352
 
 
353
 
   .. versionchanged:: 3.5
354
 
      The function now sleeps at least *secs* even if the sleep is interrupted
355
 
      by a signal, except if the signal handler raises an exception (see
356
 
      :pep:`475` for the rationale).
357
 
 
358
 
 
359
 
.. function:: strftime(format[, t])
360
 
 
361
 
   Convert a tuple or :class:`struct_time` representing a time as returned by
362
 
   :func:`gmtime` or :func:`localtime` to a string as specified by the *format*
363
 
   argument.  If *t* is not provided, the current time as returned by
364
 
   :func:`localtime` is used.  *format* must be a string.  :exc:`ValueError` is
365
 
   raised if any field in *t* is outside of the allowed range.
366
 
 
367
 
   0 is a legal argument for any position in the time tuple; if it is normally
368
 
   illegal the value is forced to a correct one.
369
 
 
370
 
   The following directives can be embedded in the *format* string. They are shown
371
 
   without the optional field width and precision specification, and are replaced
372
 
   by the indicated characters in the :func:`strftime` result:
373
 
 
374
 
   +-----------+------------------------------------------------+-------+
375
 
   | Directive | Meaning                                        | Notes |
376
 
   +===========+================================================+=======+
377
 
   | ``%a``    | Locale's abbreviated weekday name.             |       |
378
 
   |           |                                                |       |
379
 
   +-----------+------------------------------------------------+-------+
380
 
   | ``%A``    | Locale's full weekday name.                    |       |
381
 
   +-----------+------------------------------------------------+-------+
382
 
   | ``%b``    | Locale's abbreviated month name.               |       |
383
 
   |           |                                                |       |
384
 
   +-----------+------------------------------------------------+-------+
385
 
   | ``%B``    | Locale's full month name.                      |       |
386
 
   +-----------+------------------------------------------------+-------+
387
 
   | ``%c``    | Locale's appropriate date and time             |       |
388
 
   |           | representation.                                |       |
389
 
   +-----------+------------------------------------------------+-------+
390
 
   | ``%d``    | Day of the month as a decimal number [01,31].  |       |
391
 
   |           |                                                |       |
392
 
   +-----------+------------------------------------------------+-------+
393
 
   | ``%H``    | Hour (24-hour clock) as a decimal number       |       |
394
 
   |           | [00,23].                                       |       |
395
 
   +-----------+------------------------------------------------+-------+
396
 
   | ``%I``    | Hour (12-hour clock) as a decimal number       |       |
397
 
   |           | [01,12].                                       |       |
398
 
   +-----------+------------------------------------------------+-------+
399
 
   | ``%j``    | Day of the year as a decimal number [001,366]. |       |
400
 
   |           |                                                |       |
401
 
   +-----------+------------------------------------------------+-------+
402
 
   | ``%m``    | Month as a decimal number [01,12].             |       |
403
 
   |           |                                                |       |
404
 
   +-----------+------------------------------------------------+-------+
405
 
   | ``%M``    | Minute as a decimal number [00,59].            |       |
406
 
   |           |                                                |       |
407
 
   +-----------+------------------------------------------------+-------+
408
 
   | ``%p``    | Locale's equivalent of either AM or PM.        | \(1)  |
409
 
   |           |                                                |       |
410
 
   +-----------+------------------------------------------------+-------+
411
 
   | ``%S``    | Second as a decimal number [00,61].            | \(2)  |
412
 
   |           |                                                |       |
413
 
   +-----------+------------------------------------------------+-------+
414
 
   | ``%U``    | Week number of the year (Sunday as the first   | \(3)  |
415
 
   |           | day of the week) as a decimal number [00,53].  |       |
416
 
   |           | All days in a new year preceding the first     |       |
417
 
   |           | Sunday are considered to be in week 0.         |       |
418
 
   |           |                                                |       |
419
 
   |           |                                                |       |
420
 
   |           |                                                |       |
421
 
   +-----------+------------------------------------------------+-------+
422
 
   | ``%w``    | Weekday as a decimal number [0(Sunday),6].     |       |
423
 
   |           |                                                |       |
424
 
   +-----------+------------------------------------------------+-------+
425
 
   | ``%W``    | Week number of the year (Monday as the first   | \(3)  |
426
 
   |           | day of the week) as a decimal number [00,53].  |       |
427
 
   |           | All days in a new year preceding the first     |       |
428
 
   |           | Monday are considered to be in week 0.         |       |
429
 
   |           |                                                |       |
430
 
   |           |                                                |       |
431
 
   |           |                                                |       |
432
 
   +-----------+------------------------------------------------+-------+
433
 
   | ``%x``    | Locale's appropriate date representation.      |       |
434
 
   |           |                                                |       |
435
 
   +-----------+------------------------------------------------+-------+
436
 
   | ``%X``    | Locale's appropriate time representation.      |       |
437
 
   |           |                                                |       |
438
 
   +-----------+------------------------------------------------+-------+
439
 
   | ``%y``    | Year without century as a decimal number       |       |
440
 
   |           | [00,99].                                       |       |
441
 
   +-----------+------------------------------------------------+-------+
442
 
   | ``%Y``    | Year with century as a decimal number.         |       |
443
 
   |           |                                                |       |
444
 
   +-----------+------------------------------------------------+-------+
445
 
   | ``%z``    | Time zone offset indicating a positive or      |       |
446
 
   |           | negative time difference from UTC/GMT of the   |       |
447
 
   |           | form +HHMM or -HHMM, where H represents decimal|       |
448
 
   |           | hour digits and M represents decimal minute    |       |
449
 
   |           | digits [-23:59, +23:59].                       |       |
450
 
   +-----------+------------------------------------------------+-------+
451
 
   | ``%Z``    | Time zone name (no characters if no time zone  |       |
452
 
   |           | exists).                                       |       |
453
 
   +-----------+------------------------------------------------+-------+
454
 
   | ``%%``    | A literal ``'%'`` character.                   |       |
455
 
   +-----------+------------------------------------------------+-------+
456
 
 
457
 
   Notes:
458
 
 
459
 
   (1)
460
 
      When used with the :func:`strptime` function, the ``%p`` directive only affects
461
 
      the output hour field if the ``%I`` directive is used to parse the hour.
462
 
 
463
 
   (2)
464
 
      The range really is ``0`` to ``61``; value ``60`` is valid in
465
 
      timestamps representing leap seconds and value ``61`` is supported
466
 
      for historical reasons.
467
 
 
468
 
   (3)
469
 
      When used with the :func:`strptime` function, ``%U`` and ``%W`` are only used in
470
 
      calculations when the day of the week and the year are specified.
471
 
 
472
 
   Here is an example, a format for dates compatible with that specified  in the
473
 
   :rfc:`2822` Internet email standard.  [#]_ ::
474
 
 
475
 
      >>> from time import gmtime, strftime
476
 
      >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
477
 
      'Thu, 28 Jun 2001 14:17:15 +0000'
478
 
 
479
 
   Additional directives may be supported on certain platforms, but only the
480
 
   ones listed here have a meaning standardized by ANSI C.  To see the full set
481
 
   of format codes supported on your platform, consult the :manpage:`strftime(3)`
482
 
   documentation.
483
 
 
484
 
   On some platforms, an optional field width and precision specification can
485
 
   immediately follow the initial ``'%'`` of a directive in the following order;
486
 
   this is also not portable. The field width is normally 2 except for ``%j`` where
487
 
   it is 3.
488
 
 
489
 
 
490
 
.. function:: strptime(string[, format])
491
 
 
492
 
   Parse a string representing a time according to a format.  The return value
493
 
   is a :class:`struct_time` as returned by :func:`gmtime` or
494
 
   :func:`localtime`.
495
 
 
496
 
   The *format* parameter uses the same directives as those used by
497
 
   :func:`strftime`; it defaults to ``"%a %b %d %H:%M:%S %Y"`` which matches the
498
 
   formatting returned by :func:`ctime`. If *string* cannot be parsed according
499
 
   to *format*, or if it has excess data after parsing, :exc:`ValueError` is
500
 
   raised. The default values used to fill in any missing data when more
501
 
   accurate values cannot be inferred are ``(1900, 1, 1, 0, 0, 0, 0, 1, -1)``.
502
 
   Both *string* and *format* must be strings.
503
 
 
504
 
   For example:
505
 
 
506
 
      >>> import time
507
 
      >>> time.strptime("30 Nov 00", "%d %b %y")   # doctest: +NORMALIZE_WHITESPACE
508
 
      time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0,
509
 
                       tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
510
 
 
511
 
   Support for the ``%Z`` directive is based on the values contained in ``tzname``
512
 
   and whether ``daylight`` is true.  Because of this, it is platform-specific
513
 
   except for recognizing UTC and GMT which are always known (and are considered to
514
 
   be non-daylight savings timezones).
515
 
 
516
 
   Only the directives specified in the documentation are supported.  Because
517
 
   ``strftime()`` is implemented per platform it can sometimes offer more
518
 
   directives than those listed.  But ``strptime()`` is independent of any platform
519
 
   and thus does not necessarily support all directives available that are not
520
 
   documented as supported.
521
 
 
522
 
 
523
 
.. class:: struct_time
524
 
 
525
 
   The type of the time value sequence returned by :func:`gmtime`,
526
 
   :func:`localtime`, and :func:`strptime`.  It is an object with a :term:`named
527
 
   tuple` interface: values can be accessed by index and by attribute name.  The
528
 
   following values are present:
529
 
 
530
 
   +-------+-------------------+---------------------------------+
531
 
   | Index | Attribute         | Values                          |
532
 
   +=======+===================+=================================+
533
 
   | 0     | :attr:`tm_year`   | (for example, 1993)             |
534
 
   +-------+-------------------+---------------------------------+
535
 
   | 1     | :attr:`tm_mon`    | range [1, 12]                   |
536
 
   +-------+-------------------+---------------------------------+
537
 
   | 2     | :attr:`tm_mday`   | range [1, 31]                   |
538
 
   +-------+-------------------+---------------------------------+
539
 
   | 3     | :attr:`tm_hour`   | range [0, 23]                   |
540
 
   +-------+-------------------+---------------------------------+
541
 
   | 4     | :attr:`tm_min`    | range [0, 59]                   |
542
 
   +-------+-------------------+---------------------------------+
543
 
   | 5     | :attr:`tm_sec`    | range [0, 61]; see **(2)** in   |
544
 
   |       |                   | :func:`strftime` description    |
545
 
   +-------+-------------------+---------------------------------+
546
 
   | 6     | :attr:`tm_wday`   | range [0, 6], Monday is 0       |
547
 
   +-------+-------------------+---------------------------------+
548
 
   | 7     | :attr:`tm_yday`   | range [1, 366]                  |
549
 
   +-------+-------------------+---------------------------------+
550
 
   | 8     | :attr:`tm_isdst`  | 0, 1 or -1; see below           |
551
 
   +-------+-------------------+---------------------------------+
552
 
   | N/A   | :attr:`tm_zone`   | abbreviation of timezone name   |
553
 
   +-------+-------------------+---------------------------------+
554
 
   | N/A   | :attr:`tm_gmtoff` | offset east of UTC in seconds   |
555
 
   +-------+-------------------+---------------------------------+
556
 
 
557
 
   Note that unlike the C structure, the month value is a range of [1, 12], not
558
 
   [0, 11].
559
 
 
560
 
   In calls to :func:`mktime`, :attr:`tm_isdst` may be set to 1 when daylight
561
 
   savings time is in effect, and 0 when it is not.  A value of -1 indicates that
562
 
   this is not known, and will usually result in the correct state being filled in.
563
 
 
564
 
   When a tuple with an incorrect length is passed to a function expecting a
565
 
   :class:`struct_time`, or having elements of the wrong type, a
566
 
   :exc:`TypeError` is raised.
567
 
 
568
 
  .. versionchanged:: 3.3
569
 
     :attr:`tm_gmtoff` and :attr:`tm_zone` attributes are available on platforms
570
 
     with C library supporting the corresponding fields in ``struct tm``.
571
 
 
572
 
.. function:: time()
573
 
 
574
 
   Return the time in seconds since the epoch as a floating point number.
575
 
   Note that even though the time is always returned as a floating point
576
 
   number, not all systems provide time with a better precision than 1 second.
577
 
   While this function normally returns non-decreasing values, it can return a
578
 
   lower value than a previous call if the system clock has been set back between
579
 
   the two calls.
580
 
 
581
 
.. data:: timezone
582
 
 
583
 
   The offset of the local (non-DST) timezone, in seconds west of UTC (negative in
584
 
   most of Western Europe, positive in the US, zero in the UK).
585
 
 
586
 
 
587
 
.. data:: tzname
588
 
 
589
 
   A tuple of two strings: the first is the name of the local non-DST timezone, the
590
 
   second is the name of the local DST timezone.  If no DST timezone is defined,
591
 
   the second string should not be used.
592
 
 
593
 
 
594
 
.. function:: tzset()
595
 
 
596
 
   Resets the time conversion rules used by the library routines. The environment
597
 
   variable :envvar:`TZ` specifies how this is done.
598
 
 
599
 
   Availability: Unix.
600
 
 
601
 
   .. note::
602
 
 
603
 
      Although in many cases, changing the :envvar:`TZ` environment variable may
604
 
      affect the output of functions like :func:`localtime` without calling
605
 
      :func:`tzset`, this behavior should not be relied on.
606
 
 
607
 
      The :envvar:`TZ` environment variable should contain no whitespace.
608
 
 
609
 
   The standard format of the :envvar:`TZ` environment variable is (whitespace
610
 
   added for clarity)::
611
 
 
612
 
      std offset [dst [offset [,start[/time], end[/time]]]]
613
 
 
614
 
   Where the components are:
615
 
 
616
 
   ``std`` and ``dst``
617
 
      Three or more alphanumerics giving the timezone abbreviations. These will be
618
 
      propagated into time.tzname
619
 
 
620
 
   ``offset``
621
 
      The offset has the form: ``± hh[:mm[:ss]]``. This indicates the value
622
 
      added the local time to arrive at UTC.  If preceded by a '-', the timezone
623
 
      is east of the Prime Meridian; otherwise, it is west. If no offset follows
624
 
      dst, summer time is assumed to be one hour ahead of standard time.
625
 
 
626
 
   ``start[/time], end[/time]``
627
 
      Indicates when to change to and back from DST. The format of the
628
 
      start and end dates are one of the following:
629
 
 
630
 
      :samp:`J{n}`
631
 
         The Julian day *n* (1 <= *n* <= 365). Leap days are not counted, so in
632
 
         all years February 28 is day 59 and March 1 is day 60.
633
 
 
634
 
      :samp:`{n}`
635
 
         The zero-based Julian day (0 <= *n* <= 365). Leap days are counted, and
636
 
         it is possible to refer to February 29.
637
 
 
638
 
      :samp:`M{m}.{n}.{d}`
639
 
         The *d*'th day (0 <= *d* <= 6) or week *n* of month *m* of the year (1
640
 
         <= *n* <= 5, 1 <= *m* <= 12, where week 5 means "the last *d* day in
641
 
         month *m*" which may occur in either the fourth or the fifth
642
 
         week). Week 1 is the first week in which the *d*'th day occurs. Day
643
 
         zero is Sunday.
644
 
 
645
 
      ``time`` has the same format as ``offset`` except that no leading sign
646
 
      ('-' or '+') is allowed. The default, if time is not given, is 02:00:00.
647
 
 
648
 
   ::
649
 
 
650
 
      >>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0'
651
 
      >>> time.tzset()
652
 
      >>> time.strftime('%X %x %Z')
653
 
      '02:07:36 05/08/03 EDT'
654
 
      >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
655
 
      >>> time.tzset()
656
 
      >>> time.strftime('%X %x %Z')
657
 
      '16:08:12 05/08/03 AEST'
658
 
 
659
 
   On many Unix systems (including \*BSD, Linux, Solaris, and Darwin), it is more
660
 
   convenient to use the system's zoneinfo (:manpage:`tzfile(5)`)  database to
661
 
   specify the timezone rules. To do this, set the  :envvar:`TZ` environment
662
 
   variable to the path of the required timezone  datafile, relative to the root of
663
 
   the systems 'zoneinfo' timezone database, usually located at
664
 
   :file:`/usr/share/zoneinfo`. For example,  ``'US/Eastern'``,
665
 
   ``'Australia/Melbourne'``, ``'Egypt'`` or  ``'Europe/Amsterdam'``. ::
666
 
 
667
 
      >>> os.environ['TZ'] = 'US/Eastern'
668
 
      >>> time.tzset()
669
 
      >>> time.tzname
670
 
      ('EST', 'EDT')
671
 
      >>> os.environ['TZ'] = 'Egypt'
672
 
      >>> time.tzset()
673
 
      >>> time.tzname
674
 
      ('EET', 'EEST')
675
 
 
676
 
 
677
 
.. seealso::
678
 
 
679
 
   Module :mod:`datetime`
680
 
      More object-oriented interface to dates and times.
681
 
 
682
 
   Module :mod:`locale`
683
 
      Internationalization services.  The locale setting affects the interpretation
684
 
      of many format specifiers in :func:`strftime` and :func:`strptime`.
685
 
 
686
 
   Module :mod:`calendar`
687
 
      General calendar-related functions.   :func:`~calendar.timegm` is the
688
 
      inverse of :func:`gmtime` from this module.
689
 
 
690
 
.. rubric:: Footnotes
691
 
 
692
 
.. [#] The use of ``%Z`` is now deprecated, but the ``%z`` escape that expands to the
693
 
   preferred  hour/minute offset is not supported by all ANSI C libraries. Also, a
694
 
   strict reading of the original 1982 :rfc:`822` standard calls for a two-digit
695
 
   year (%y rather than %Y), but practice moved to 4-digit years long before the
696
 
   year 2000.  After that, :rfc:`822` became obsolete and the 4-digit year has
697
 
   been first recommended by :rfc:`1123` and then mandated by :rfc:`2822`.
698