17db96d56Sopenharmony_ci:mod:`time` --- Time access and conversions 27db96d56Sopenharmony_ci=========================================== 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: time 57db96d56Sopenharmony_ci :synopsis: Time access and conversions. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci-------------- 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_ciThis module provides various time-related functions. For related 107db96d56Sopenharmony_cifunctionality, see also the :mod:`datetime` and :mod:`calendar` modules. 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ciAlthough this module is always available, 137db96d56Sopenharmony_cinot all functions are available on all platforms. Most of the functions 147db96d56Sopenharmony_cidefined in this module call platform C library functions with the same name. It 157db96d56Sopenharmony_cimay sometimes be helpful to consult the platform documentation, because the 167db96d56Sopenharmony_cisemantics of these functions varies among platforms. 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ciAn explanation of some terminology and conventions is in order. 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci.. _epoch: 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ci.. index:: single: epoch 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci* The :dfn:`epoch` is the point where the time starts, the return value of 257db96d56Sopenharmony_ci ``time.gmtime(0)``. It is January 1, 1970, 00:00:00 (UTC) on all platforms. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci.. _leap seconds: https://en.wikipedia.org/wiki/Leap_second 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci.. index:: seconds since the epoch 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci* The term :dfn:`seconds since the epoch` refers to the total number 327db96d56Sopenharmony_ci of elapsed seconds since the epoch, typically excluding 337db96d56Sopenharmony_ci `leap seconds`_. Leap seconds are excluded from this total on all 347db96d56Sopenharmony_ci POSIX-compliant platforms. 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci.. index:: single: Year 2038 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci* The functions in this module may not handle dates and times before the epoch_ or 397db96d56Sopenharmony_ci far in the future. The cut-off point in the future is determined by the C 407db96d56Sopenharmony_ci library; for 32-bit systems, it is typically in 2038. 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci.. index:: 437db96d56Sopenharmony_ci single: 2-digit years 447db96d56Sopenharmony_ci 457db96d56Sopenharmony_ci* Function :func:`strptime` can parse 2-digit years when given ``%y`` format 467db96d56Sopenharmony_ci code. When 2-digit years are parsed, they are converted according to the POSIX 477db96d56Sopenharmony_ci and ISO C standards: values 69--99 are mapped to 1969--1999, and values 0--68 487db96d56Sopenharmony_ci are mapped to 2000--2068. 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci.. index:: 517db96d56Sopenharmony_ci single: UTC 527db96d56Sopenharmony_ci single: Coordinated Universal Time 537db96d56Sopenharmony_ci single: Greenwich Mean Time 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci* UTC is Coordinated Universal Time (formerly known as Greenwich Mean Time, or 567db96d56Sopenharmony_ci GMT). The acronym UTC is not a mistake but a compromise between English and 577db96d56Sopenharmony_ci French. 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci.. index:: single: Daylight Saving Time 607db96d56Sopenharmony_ci 617db96d56Sopenharmony_ci* DST is Daylight Saving Time, an adjustment of the timezone by (usually) one 627db96d56Sopenharmony_ci hour during part of the year. DST rules are magic (determined by local law) and 637db96d56Sopenharmony_ci can change from year to year. The C library has a table containing the local 647db96d56Sopenharmony_ci rules (often it is read from a system file for flexibility) and is the only 657db96d56Sopenharmony_ci source of True Wisdom in this respect. 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci* The precision of the various real-time functions may be less than suggested by 687db96d56Sopenharmony_ci the units in which their value or argument is expressed. E.g. on most Unix 697db96d56Sopenharmony_ci systems, the clock "ticks" only 50 or 100 times a second. 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci* On the other hand, the precision of :func:`.time` and :func:`sleep` is better 727db96d56Sopenharmony_ci than their Unix equivalents: times are expressed as floating point numbers, 737db96d56Sopenharmony_ci :func:`.time` returns the most accurate time available (using Unix 747db96d56Sopenharmony_ci :c:func:`gettimeofday` where available), and :func:`sleep` will accept a time 757db96d56Sopenharmony_ci with a nonzero fraction (Unix :c:func:`select` is used to implement this, where 767db96d56Sopenharmony_ci available). 777db96d56Sopenharmony_ci 787db96d56Sopenharmony_ci* The time value as returned by :func:`gmtime`, :func:`localtime`, and 797db96d56Sopenharmony_ci :func:`strptime`, and accepted by :func:`asctime`, :func:`mktime` and 807db96d56Sopenharmony_ci :func:`strftime`, is a sequence of 9 integers. The return values of 817db96d56Sopenharmony_ci :func:`gmtime`, :func:`localtime`, and :func:`strptime` also offer attribute 827db96d56Sopenharmony_ci names for individual fields. 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci See :class:`struct_time` for a description of these objects. 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci .. versionchanged:: 3.3 877db96d56Sopenharmony_ci The :class:`struct_time` type was extended to provide the :attr:`tm_gmtoff` 887db96d56Sopenharmony_ci and :attr:`tm_zone` attributes when platform supports corresponding 897db96d56Sopenharmony_ci ``struct tm`` members. 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci .. versionchanged:: 3.6 927db96d56Sopenharmony_ci The :class:`struct_time` attributes :attr:`tm_gmtoff` and :attr:`tm_zone` 937db96d56Sopenharmony_ci are now available on all platforms. 947db96d56Sopenharmony_ci 957db96d56Sopenharmony_ci* Use the following functions to convert between time representations: 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci +-------------------------+-------------------------+-------------------------+ 987db96d56Sopenharmony_ci | From | To | Use | 997db96d56Sopenharmony_ci +=========================+=========================+=========================+ 1007db96d56Sopenharmony_ci | seconds since the epoch | :class:`struct_time` in | :func:`gmtime` | 1017db96d56Sopenharmony_ci | | UTC | | 1027db96d56Sopenharmony_ci +-------------------------+-------------------------+-------------------------+ 1037db96d56Sopenharmony_ci | seconds since the epoch | :class:`struct_time` in | :func:`localtime` | 1047db96d56Sopenharmony_ci | | local time | | 1057db96d56Sopenharmony_ci +-------------------------+-------------------------+-------------------------+ 1067db96d56Sopenharmony_ci | :class:`struct_time` in | seconds since the epoch | :func:`calendar.timegm` | 1077db96d56Sopenharmony_ci | UTC | | | 1087db96d56Sopenharmony_ci +-------------------------+-------------------------+-------------------------+ 1097db96d56Sopenharmony_ci | :class:`struct_time` in | seconds since the epoch | :func:`mktime` | 1107db96d56Sopenharmony_ci | local time | | | 1117db96d56Sopenharmony_ci +-------------------------+-------------------------+-------------------------+ 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci.. _time-functions: 1157db96d56Sopenharmony_ci 1167db96d56Sopenharmony_ciFunctions 1177db96d56Sopenharmony_ci--------- 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_ci.. function:: asctime([t]) 1207db96d56Sopenharmony_ci 1217db96d56Sopenharmony_ci Convert a tuple or :class:`struct_time` representing a time as returned by 1227db96d56Sopenharmony_ci :func:`gmtime` or :func:`localtime` to a string of the following 1237db96d56Sopenharmony_ci form: ``'Sun Jun 20 23:21:05 1993'``. The day field is two characters long 1247db96d56Sopenharmony_ci and is space padded if the day is a single digit, 1257db96d56Sopenharmony_ci e.g.: ``'Wed Jun 9 04:26:40 1993'``. 1267db96d56Sopenharmony_ci 1277db96d56Sopenharmony_ci If *t* is not provided, the current time as returned by :func:`localtime` 1287db96d56Sopenharmony_ci is used. Locale information is not used by :func:`asctime`. 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ci .. note:: 1317db96d56Sopenharmony_ci 1327db96d56Sopenharmony_ci Unlike the C function of the same name, :func:`asctime` does not add a 1337db96d56Sopenharmony_ci trailing newline. 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci.. function:: pthread_getcpuclockid(thread_id) 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ci Return the *clk_id* of the thread-specific CPU-time clock for the specified *thread_id*. 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci Use :func:`threading.get_ident` or the :attr:`~threading.Thread.ident` 1407db96d56Sopenharmony_ci attribute of :class:`threading.Thread` objects to get a suitable value 1417db96d56Sopenharmony_ci for *thread_id*. 1427db96d56Sopenharmony_ci 1437db96d56Sopenharmony_ci .. warning:: 1447db96d56Sopenharmony_ci Passing an invalid or expired *thread_id* may result in 1457db96d56Sopenharmony_ci undefined behavior, such as segmentation fault. 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci .. availability:: Unix 1487db96d56Sopenharmony_ci 1497db96d56Sopenharmony_ci See the man page for :manpage:`pthread_getcpuclockid(3)` for 1507db96d56Sopenharmony_ci further information. 1517db96d56Sopenharmony_ci 1527db96d56Sopenharmony_ci .. versionadded:: 3.7 1537db96d56Sopenharmony_ci 1547db96d56Sopenharmony_ci.. function:: clock_getres(clk_id) 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci Return the resolution (precision) of the specified clock *clk_id*. Refer to 1577db96d56Sopenharmony_ci :ref:`time-clock-id-constants` for a list of accepted values for *clk_id*. 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ci .. availability:: Unix. 1607db96d56Sopenharmony_ci 1617db96d56Sopenharmony_ci .. versionadded:: 3.3 1627db96d56Sopenharmony_ci 1637db96d56Sopenharmony_ci 1647db96d56Sopenharmony_ci.. function:: clock_gettime(clk_id) -> float 1657db96d56Sopenharmony_ci 1667db96d56Sopenharmony_ci Return the time of the specified clock *clk_id*. Refer to 1677db96d56Sopenharmony_ci :ref:`time-clock-id-constants` for a list of accepted values for *clk_id*. 1687db96d56Sopenharmony_ci 1697db96d56Sopenharmony_ci Use :func:`clock_gettime_ns` to avoid the precision loss caused by the 1707db96d56Sopenharmony_ci :class:`float` type. 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci .. availability:: Unix. 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ci .. versionadded:: 3.3 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_ci.. function:: clock_gettime_ns(clk_id) -> int 1787db96d56Sopenharmony_ci 1797db96d56Sopenharmony_ci Similar to :func:`clock_gettime` but return time as nanoseconds. 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci .. availability:: Unix. 1827db96d56Sopenharmony_ci 1837db96d56Sopenharmony_ci .. versionadded:: 3.7 1847db96d56Sopenharmony_ci 1857db96d56Sopenharmony_ci 1867db96d56Sopenharmony_ci.. function:: clock_settime(clk_id, time: float) 1877db96d56Sopenharmony_ci 1887db96d56Sopenharmony_ci Set the time of the specified clock *clk_id*. Currently, 1897db96d56Sopenharmony_ci :data:`CLOCK_REALTIME` is the only accepted value for *clk_id*. 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_ci Use :func:`clock_settime_ns` to avoid the precision loss caused by the 1927db96d56Sopenharmony_ci :class:`float` type. 1937db96d56Sopenharmony_ci 1947db96d56Sopenharmony_ci .. availability:: Unix. 1957db96d56Sopenharmony_ci 1967db96d56Sopenharmony_ci .. versionadded:: 3.3 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_ci 1997db96d56Sopenharmony_ci.. function:: clock_settime_ns(clk_id, time: int) 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_ci Similar to :func:`clock_settime` but set time with nanoseconds. 2027db96d56Sopenharmony_ci 2037db96d56Sopenharmony_ci .. availability:: Unix. 2047db96d56Sopenharmony_ci 2057db96d56Sopenharmony_ci .. versionadded:: 3.7 2067db96d56Sopenharmony_ci 2077db96d56Sopenharmony_ci 2087db96d56Sopenharmony_ci.. function:: ctime([secs]) 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ci Convert a time expressed in seconds since the epoch_ to a string of a form: 2117db96d56Sopenharmony_ci ``'Sun Jun 20 23:21:05 1993'`` representing local time. The day field 2127db96d56Sopenharmony_ci is two characters long and is space padded if the day is a single digit, 2137db96d56Sopenharmony_ci e.g.: ``'Wed Jun 9 04:26:40 1993'``. 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ci If *secs* is not provided or :const:`None`, the current time as 2167db96d56Sopenharmony_ci returned by :func:`.time` is used. ``ctime(secs)`` is equivalent to 2177db96d56Sopenharmony_ci ``asctime(localtime(secs))``. Locale information is not used by 2187db96d56Sopenharmony_ci :func:`ctime`. 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_ci.. function:: get_clock_info(name) 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci Get information on the specified clock as a namespace object. 2247db96d56Sopenharmony_ci Supported clock names and the corresponding functions to read their value 2257db96d56Sopenharmony_ci are: 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci * ``'monotonic'``: :func:`time.monotonic` 2287db96d56Sopenharmony_ci * ``'perf_counter'``: :func:`time.perf_counter` 2297db96d56Sopenharmony_ci * ``'process_time'``: :func:`time.process_time` 2307db96d56Sopenharmony_ci * ``'thread_time'``: :func:`time.thread_time` 2317db96d56Sopenharmony_ci * ``'time'``: :func:`time.time` 2327db96d56Sopenharmony_ci 2337db96d56Sopenharmony_ci The result has the following attributes: 2347db96d56Sopenharmony_ci 2357db96d56Sopenharmony_ci - *adjustable*: ``True`` if the clock can be changed automatically (e.g. by 2367db96d56Sopenharmony_ci a NTP daemon) or manually by the system administrator, ``False`` otherwise 2377db96d56Sopenharmony_ci - *implementation*: The name of the underlying C function used to get 2387db96d56Sopenharmony_ci the clock value. Refer to :ref:`time-clock-id-constants` for possible values. 2397db96d56Sopenharmony_ci - *monotonic*: ``True`` if the clock cannot go backward, 2407db96d56Sopenharmony_ci ``False`` otherwise 2417db96d56Sopenharmony_ci - *resolution*: The resolution of the clock in seconds (:class:`float`) 2427db96d56Sopenharmony_ci 2437db96d56Sopenharmony_ci .. versionadded:: 3.3 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci 2467db96d56Sopenharmony_ci.. function:: gmtime([secs]) 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci Convert a time expressed in seconds since the epoch_ to a :class:`struct_time` in 2497db96d56Sopenharmony_ci UTC in which the dst flag is always zero. If *secs* is not provided or 2507db96d56Sopenharmony_ci :const:`None`, the current time as returned by :func:`.time` is used. Fractions 2517db96d56Sopenharmony_ci of a second are ignored. See above for a description of the 2527db96d56Sopenharmony_ci :class:`struct_time` object. See :func:`calendar.timegm` for the inverse of this 2537db96d56Sopenharmony_ci function. 2547db96d56Sopenharmony_ci 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ci.. function:: localtime([secs]) 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci Like :func:`gmtime` but converts to local time. If *secs* is not provided or 2597db96d56Sopenharmony_ci :const:`None`, the current time as returned by :func:`.time` is used. The dst 2607db96d56Sopenharmony_ci flag is set to ``1`` when DST applies to the given time. 2617db96d56Sopenharmony_ci 2627db96d56Sopenharmony_ci :func:`localtime` may raise :exc:`OverflowError`, if the timestamp is 2637db96d56Sopenharmony_ci outside the range of values supported by the platform C :c:func:`localtime` 2647db96d56Sopenharmony_ci or :c:func:`gmtime` functions, and :exc:`OSError` on :c:func:`localtime` or 2657db96d56Sopenharmony_ci :c:func:`gmtime` failure. It's common for this to be restricted to years 2667db96d56Sopenharmony_ci between 1970 and 2038. 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci 2697db96d56Sopenharmony_ci.. function:: mktime(t) 2707db96d56Sopenharmony_ci 2717db96d56Sopenharmony_ci This is the inverse function of :func:`localtime`. Its argument is the 2727db96d56Sopenharmony_ci :class:`struct_time` or full 9-tuple (since the dst flag is needed; use ``-1`` 2737db96d56Sopenharmony_ci as the dst flag if it is unknown) which expresses the time in *local* time, not 2747db96d56Sopenharmony_ci UTC. It returns a floating point number, for compatibility with :func:`.time`. 2757db96d56Sopenharmony_ci If the input value cannot be represented as a valid time, either 2767db96d56Sopenharmony_ci :exc:`OverflowError` or :exc:`ValueError` will be raised (which depends on 2777db96d56Sopenharmony_ci whether the invalid value is caught by Python or the underlying C libraries). 2787db96d56Sopenharmony_ci The earliest date for which it can generate a time is platform-dependent. 2797db96d56Sopenharmony_ci 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ci.. function:: monotonic() -> float 2827db96d56Sopenharmony_ci 2837db96d56Sopenharmony_ci Return the value (in fractional seconds) of a monotonic clock, i.e. a clock 2847db96d56Sopenharmony_ci that cannot go backwards. The clock is not affected by system clock updates. 2857db96d56Sopenharmony_ci The reference point of the returned value is undefined, so that only the 2867db96d56Sopenharmony_ci difference between the results of two calls is valid. 2877db96d56Sopenharmony_ci 2887db96d56Sopenharmony_ci Use :func:`monotonic_ns` to avoid the precision loss caused by the 2897db96d56Sopenharmony_ci :class:`float` type. 2907db96d56Sopenharmony_ci 2917db96d56Sopenharmony_ci .. versionadded:: 3.3 2927db96d56Sopenharmony_ci 2937db96d56Sopenharmony_ci .. versionchanged:: 3.5 2947db96d56Sopenharmony_ci The function is now always available and always system-wide. 2957db96d56Sopenharmony_ci 2967db96d56Sopenharmony_ci .. versionchanged:: 3.10 2977db96d56Sopenharmony_ci On macOS, the function is now system-wide. 2987db96d56Sopenharmony_ci 2997db96d56Sopenharmony_ci 3007db96d56Sopenharmony_ci.. function:: monotonic_ns() -> int 3017db96d56Sopenharmony_ci 3027db96d56Sopenharmony_ci Similar to :func:`monotonic`, but return time as nanoseconds. 3037db96d56Sopenharmony_ci 3047db96d56Sopenharmony_ci .. versionadded:: 3.7 3057db96d56Sopenharmony_ci 3067db96d56Sopenharmony_ci.. function:: perf_counter() -> float 3077db96d56Sopenharmony_ci 3087db96d56Sopenharmony_ci .. index:: 3097db96d56Sopenharmony_ci single: benchmarking 3107db96d56Sopenharmony_ci 3117db96d56Sopenharmony_ci Return the value (in fractional seconds) of a performance counter, i.e. a 3127db96d56Sopenharmony_ci clock with the highest available resolution to measure a short duration. It 3137db96d56Sopenharmony_ci does include time elapsed during sleep and is system-wide. The reference 3147db96d56Sopenharmony_ci point of the returned value is undefined, so that only the difference between 3157db96d56Sopenharmony_ci the results of two calls is valid. 3167db96d56Sopenharmony_ci 3177db96d56Sopenharmony_ci Use :func:`perf_counter_ns` to avoid the precision loss caused by the 3187db96d56Sopenharmony_ci :class:`float` type. 3197db96d56Sopenharmony_ci 3207db96d56Sopenharmony_ci .. versionadded:: 3.3 3217db96d56Sopenharmony_ci 3227db96d56Sopenharmony_ci .. versionchanged:: 3.10 3237db96d56Sopenharmony_ci On Windows, the function is now system-wide. 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ci.. function:: perf_counter_ns() -> int 3267db96d56Sopenharmony_ci 3277db96d56Sopenharmony_ci Similar to :func:`perf_counter`, but return time as nanoseconds. 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_ci .. versionadded:: 3.7 3307db96d56Sopenharmony_ci 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_ci.. function:: process_time() -> float 3337db96d56Sopenharmony_ci 3347db96d56Sopenharmony_ci .. index:: 3357db96d56Sopenharmony_ci single: CPU time 3367db96d56Sopenharmony_ci single: processor time 3377db96d56Sopenharmony_ci single: benchmarking 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ci Return the value (in fractional seconds) of the sum of the system and user 3407db96d56Sopenharmony_ci CPU time of the current process. It does not include time elapsed during 3417db96d56Sopenharmony_ci sleep. It is process-wide by definition. The reference point of the 3427db96d56Sopenharmony_ci returned value is undefined, so that only the difference between the results 3437db96d56Sopenharmony_ci of two calls is valid. 3447db96d56Sopenharmony_ci 3457db96d56Sopenharmony_ci Use :func:`process_time_ns` to avoid the precision loss caused by the 3467db96d56Sopenharmony_ci :class:`float` type. 3477db96d56Sopenharmony_ci 3487db96d56Sopenharmony_ci .. versionadded:: 3.3 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci.. function:: process_time_ns() -> int 3517db96d56Sopenharmony_ci 3527db96d56Sopenharmony_ci Similar to :func:`process_time` but return time as nanoseconds. 3537db96d56Sopenharmony_ci 3547db96d56Sopenharmony_ci .. versionadded:: 3.7 3557db96d56Sopenharmony_ci 3567db96d56Sopenharmony_ci.. function:: sleep(secs) 3577db96d56Sopenharmony_ci 3587db96d56Sopenharmony_ci Suspend execution of the calling thread for the given number of seconds. 3597db96d56Sopenharmony_ci The argument may be a floating point number to indicate a more precise sleep 3607db96d56Sopenharmony_ci time. 3617db96d56Sopenharmony_ci 3627db96d56Sopenharmony_ci If the sleep is interrupted by a signal and no exception is raised by the 3637db96d56Sopenharmony_ci signal handler, the sleep is restarted with a recomputed timeout. 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci The suspension time may be longer than requested by an arbitrary amount, 3667db96d56Sopenharmony_ci because of the scheduling of other activity in the system. 3677db96d56Sopenharmony_ci 3687db96d56Sopenharmony_ci On Windows, if *secs* is zero, the thread relinquishes the remainder of its 3697db96d56Sopenharmony_ci time slice to any other thread that is ready to run. If there are no other 3707db96d56Sopenharmony_ci threads ready to run, the function returns immediately, and the thread 3717db96d56Sopenharmony_ci continues execution. On Windows 8.1 and newer the implementation uses 3727db96d56Sopenharmony_ci a `high-resolution timer 3737db96d56Sopenharmony_ci <https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/high-resolution-timers>`_ 3747db96d56Sopenharmony_ci which provides resolution of 100 nanoseconds. If *secs* is zero, ``Sleep(0)`` is used. 3757db96d56Sopenharmony_ci 3767db96d56Sopenharmony_ci Unix implementation: 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci * Use ``clock_nanosleep()`` if available (resolution: 1 nanosecond); 3797db96d56Sopenharmony_ci * Or use ``nanosleep()`` if available (resolution: 1 nanosecond); 3807db96d56Sopenharmony_ci * Or use ``select()`` (resolution: 1 microsecond). 3817db96d56Sopenharmony_ci 3827db96d56Sopenharmony_ci .. versionchanged:: 3.11 3837db96d56Sopenharmony_ci On Unix, the ``clock_nanosleep()`` and ``nanosleep()`` functions are now 3847db96d56Sopenharmony_ci used if available. On Windows, a waitable timer is now used. 3857db96d56Sopenharmony_ci 3867db96d56Sopenharmony_ci .. versionchanged:: 3.5 3877db96d56Sopenharmony_ci The function now sleeps at least *secs* even if the sleep is interrupted 3887db96d56Sopenharmony_ci by a signal, except if the signal handler raises an exception (see 3897db96d56Sopenharmony_ci :pep:`475` for the rationale). 3907db96d56Sopenharmony_ci 3917db96d56Sopenharmony_ci 3927db96d56Sopenharmony_ci.. index:: 3937db96d56Sopenharmony_ci single: % (percent); datetime format 3947db96d56Sopenharmony_ci 3957db96d56Sopenharmony_ci.. function:: strftime(format[, t]) 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci Convert a tuple or :class:`struct_time` representing a time as returned by 3987db96d56Sopenharmony_ci :func:`gmtime` or :func:`localtime` to a string as specified by the *format* 3997db96d56Sopenharmony_ci argument. If *t* is not provided, the current time as returned by 4007db96d56Sopenharmony_ci :func:`localtime` is used. *format* must be a string. :exc:`ValueError` is 4017db96d56Sopenharmony_ci raised if any field in *t* is outside of the allowed range. 4027db96d56Sopenharmony_ci 4037db96d56Sopenharmony_ci 0 is a legal argument for any position in the time tuple; if it is normally 4047db96d56Sopenharmony_ci illegal the value is forced to a correct one. 4057db96d56Sopenharmony_ci 4067db96d56Sopenharmony_ci The following directives can be embedded in the *format* string. They are shown 4077db96d56Sopenharmony_ci without the optional field width and precision specification, and are replaced 4087db96d56Sopenharmony_ci by the indicated characters in the :func:`strftime` result: 4097db96d56Sopenharmony_ci 4107db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4117db96d56Sopenharmony_ci | Directive | Meaning | Notes | 4127db96d56Sopenharmony_ci +===========+================================================+=======+ 4137db96d56Sopenharmony_ci | ``%a`` | Locale's abbreviated weekday name. | | 4147db96d56Sopenharmony_ci | | | | 4157db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4167db96d56Sopenharmony_ci | ``%A`` | Locale's full weekday name. | | 4177db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4187db96d56Sopenharmony_ci | ``%b`` | Locale's abbreviated month name. | | 4197db96d56Sopenharmony_ci | | | | 4207db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4217db96d56Sopenharmony_ci | ``%B`` | Locale's full month name. | | 4227db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4237db96d56Sopenharmony_ci | ``%c`` | Locale's appropriate date and time | | 4247db96d56Sopenharmony_ci | | representation. | | 4257db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4267db96d56Sopenharmony_ci | ``%d`` | Day of the month as a decimal number [01,31]. | | 4277db96d56Sopenharmony_ci | | | | 4287db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4297db96d56Sopenharmony_ci | ``%H`` | Hour (24-hour clock) as a decimal number | | 4307db96d56Sopenharmony_ci | | [00,23]. | | 4317db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4327db96d56Sopenharmony_ci | ``%I`` | Hour (12-hour clock) as a decimal number | | 4337db96d56Sopenharmony_ci | | [01,12]. | | 4347db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4357db96d56Sopenharmony_ci | ``%j`` | Day of the year as a decimal number [001,366]. | | 4367db96d56Sopenharmony_ci | | | | 4377db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4387db96d56Sopenharmony_ci | ``%m`` | Month as a decimal number [01,12]. | | 4397db96d56Sopenharmony_ci | | | | 4407db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4417db96d56Sopenharmony_ci | ``%M`` | Minute as a decimal number [00,59]. | | 4427db96d56Sopenharmony_ci | | | | 4437db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4447db96d56Sopenharmony_ci | ``%p`` | Locale's equivalent of either AM or PM. | \(1) | 4457db96d56Sopenharmony_ci | | | | 4467db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4477db96d56Sopenharmony_ci | ``%S`` | Second as a decimal number [00,61]. | \(2) | 4487db96d56Sopenharmony_ci | | | | 4497db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4507db96d56Sopenharmony_ci | ``%U`` | Week number of the year (Sunday as the first | \(3) | 4517db96d56Sopenharmony_ci | | day of the week) as a decimal number [00,53]. | | 4527db96d56Sopenharmony_ci | | All days in a new year preceding the first | | 4537db96d56Sopenharmony_ci | | Sunday are considered to be in week 0. | | 4547db96d56Sopenharmony_ci | | | | 4557db96d56Sopenharmony_ci | | | | 4567db96d56Sopenharmony_ci | | | | 4577db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4587db96d56Sopenharmony_ci | ``%w`` | Weekday as a decimal number [0(Sunday),6]. | | 4597db96d56Sopenharmony_ci | | | | 4607db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4617db96d56Sopenharmony_ci | ``%W`` | Week number of the year (Monday as the first | \(3) | 4627db96d56Sopenharmony_ci | | day of the week) as a decimal number [00,53]. | | 4637db96d56Sopenharmony_ci | | All days in a new year preceding the first | | 4647db96d56Sopenharmony_ci | | Monday are considered to be in week 0. | | 4657db96d56Sopenharmony_ci | | | | 4667db96d56Sopenharmony_ci | | | | 4677db96d56Sopenharmony_ci | | | | 4687db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4697db96d56Sopenharmony_ci | ``%x`` | Locale's appropriate date representation. | | 4707db96d56Sopenharmony_ci | | | | 4717db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4727db96d56Sopenharmony_ci | ``%X`` | Locale's appropriate time representation. | | 4737db96d56Sopenharmony_ci | | | | 4747db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4757db96d56Sopenharmony_ci | ``%y`` | Year without century as a decimal number | | 4767db96d56Sopenharmony_ci | | [00,99]. | | 4777db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4787db96d56Sopenharmony_ci | ``%Y`` | Year with century as a decimal number. | | 4797db96d56Sopenharmony_ci | | | | 4807db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4817db96d56Sopenharmony_ci | ``%z`` | Time zone offset indicating a positive or | | 4827db96d56Sopenharmony_ci | | negative time difference from UTC/GMT of the | | 4837db96d56Sopenharmony_ci | | form +HHMM or -HHMM, where H represents decimal| | 4847db96d56Sopenharmony_ci | | hour digits and M represents decimal minute | | 4857db96d56Sopenharmony_ci | | digits [-23:59, +23:59]. [1]_ | | 4867db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4877db96d56Sopenharmony_ci | ``%Z`` | Time zone name (no characters if no time zone | | 4887db96d56Sopenharmony_ci | | exists). Deprecated. [1]_ | | 4897db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4907db96d56Sopenharmony_ci | ``%%`` | A literal ``'%'`` character. | | 4917db96d56Sopenharmony_ci +-----------+------------------------------------------------+-------+ 4927db96d56Sopenharmony_ci 4937db96d56Sopenharmony_ci Notes: 4947db96d56Sopenharmony_ci 4957db96d56Sopenharmony_ci (1) 4967db96d56Sopenharmony_ci When used with the :func:`strptime` function, the ``%p`` directive only affects 4977db96d56Sopenharmony_ci the output hour field if the ``%I`` directive is used to parse the hour. 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ci (2) 5007db96d56Sopenharmony_ci The range really is ``0`` to ``61``; value ``60`` is valid in 5017db96d56Sopenharmony_ci timestamps representing `leap seconds`_ and value ``61`` is supported 5027db96d56Sopenharmony_ci for historical reasons. 5037db96d56Sopenharmony_ci 5047db96d56Sopenharmony_ci (3) 5057db96d56Sopenharmony_ci When used with the :func:`strptime` function, ``%U`` and ``%W`` are only used in 5067db96d56Sopenharmony_ci calculations when the day of the week and the year are specified. 5077db96d56Sopenharmony_ci 5087db96d56Sopenharmony_ci Here is an example, a format for dates compatible with that specified in the 5097db96d56Sopenharmony_ci :rfc:`2822` Internet email standard. [1]_ :: 5107db96d56Sopenharmony_ci 5117db96d56Sopenharmony_ci >>> from time import gmtime, strftime 5127db96d56Sopenharmony_ci >>> strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) 5137db96d56Sopenharmony_ci 'Thu, 28 Jun 2001 14:17:15 +0000' 5147db96d56Sopenharmony_ci 5157db96d56Sopenharmony_ci Additional directives may be supported on certain platforms, but only the 5167db96d56Sopenharmony_ci ones listed here have a meaning standardized by ANSI C. To see the full set 5177db96d56Sopenharmony_ci of format codes supported on your platform, consult the :manpage:`strftime(3)` 5187db96d56Sopenharmony_ci documentation. 5197db96d56Sopenharmony_ci 5207db96d56Sopenharmony_ci On some platforms, an optional field width and precision specification can 5217db96d56Sopenharmony_ci immediately follow the initial ``'%'`` of a directive in the following order; 5227db96d56Sopenharmony_ci this is also not portable. The field width is normally 2 except for ``%j`` where 5237db96d56Sopenharmony_ci it is 3. 5247db96d56Sopenharmony_ci 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_ci.. index:: 5277db96d56Sopenharmony_ci single: % (percent); datetime format 5287db96d56Sopenharmony_ci 5297db96d56Sopenharmony_ci.. function:: strptime(string[, format]) 5307db96d56Sopenharmony_ci 5317db96d56Sopenharmony_ci Parse a string representing a time according to a format. The return value 5327db96d56Sopenharmony_ci is a :class:`struct_time` as returned by :func:`gmtime` or 5337db96d56Sopenharmony_ci :func:`localtime`. 5347db96d56Sopenharmony_ci 5357db96d56Sopenharmony_ci The *format* parameter uses the same directives as those used by 5367db96d56Sopenharmony_ci :func:`strftime`; it defaults to ``"%a %b %d %H:%M:%S %Y"`` which matches the 5377db96d56Sopenharmony_ci formatting returned by :func:`ctime`. If *string* cannot be parsed according 5387db96d56Sopenharmony_ci to *format*, or if it has excess data after parsing, :exc:`ValueError` is 5397db96d56Sopenharmony_ci raised. The default values used to fill in any missing data when more 5407db96d56Sopenharmony_ci accurate values cannot be inferred are ``(1900, 1, 1, 0, 0, 0, 0, 1, -1)``. 5417db96d56Sopenharmony_ci Both *string* and *format* must be strings. 5427db96d56Sopenharmony_ci 5437db96d56Sopenharmony_ci For example: 5447db96d56Sopenharmony_ci 5457db96d56Sopenharmony_ci >>> import time 5467db96d56Sopenharmony_ci >>> time.strptime("30 Nov 00", "%d %b %y") # doctest: +NORMALIZE_WHITESPACE 5477db96d56Sopenharmony_ci time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, 5487db96d56Sopenharmony_ci tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1) 5497db96d56Sopenharmony_ci 5507db96d56Sopenharmony_ci Support for the ``%Z`` directive is based on the values contained in ``tzname`` 5517db96d56Sopenharmony_ci and whether ``daylight`` is true. Because of this, it is platform-specific 5527db96d56Sopenharmony_ci except for recognizing UTC and GMT which are always known (and are considered to 5537db96d56Sopenharmony_ci be non-daylight savings timezones). 5547db96d56Sopenharmony_ci 5557db96d56Sopenharmony_ci Only the directives specified in the documentation are supported. Because 5567db96d56Sopenharmony_ci ``strftime()`` is implemented per platform it can sometimes offer more 5577db96d56Sopenharmony_ci directives than those listed. But ``strptime()`` is independent of any platform 5587db96d56Sopenharmony_ci and thus does not necessarily support all directives available that are not 5597db96d56Sopenharmony_ci documented as supported. 5607db96d56Sopenharmony_ci 5617db96d56Sopenharmony_ci 5627db96d56Sopenharmony_ci.. class:: struct_time 5637db96d56Sopenharmony_ci 5647db96d56Sopenharmony_ci The type of the time value sequence returned by :func:`gmtime`, 5657db96d56Sopenharmony_ci :func:`localtime`, and :func:`strptime`. It is an object with a :term:`named 5667db96d56Sopenharmony_ci tuple` interface: values can be accessed by index and by attribute name. The 5677db96d56Sopenharmony_ci following values are present: 5687db96d56Sopenharmony_ci 5697db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5707db96d56Sopenharmony_ci | Index | Attribute | Values | 5717db96d56Sopenharmony_ci +=======+===================+=================================+ 5727db96d56Sopenharmony_ci | 0 | :attr:`tm_year` | (for example, 1993) | 5737db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5747db96d56Sopenharmony_ci | 1 | :attr:`tm_mon` | range [1, 12] | 5757db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5767db96d56Sopenharmony_ci | 2 | :attr:`tm_mday` | range [1, 31] | 5777db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5787db96d56Sopenharmony_ci | 3 | :attr:`tm_hour` | range [0, 23] | 5797db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5807db96d56Sopenharmony_ci | 4 | :attr:`tm_min` | range [0, 59] | 5817db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5827db96d56Sopenharmony_ci | 5 | :attr:`tm_sec` | range [0, 61]; see **(2)** in | 5837db96d56Sopenharmony_ci | | | :func:`strftime` description | 5847db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5857db96d56Sopenharmony_ci | 6 | :attr:`tm_wday` | range [0, 6], Monday is 0 | 5867db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5877db96d56Sopenharmony_ci | 7 | :attr:`tm_yday` | range [1, 366] | 5887db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5897db96d56Sopenharmony_ci | 8 | :attr:`tm_isdst` | 0, 1 or -1; see below | 5907db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5917db96d56Sopenharmony_ci | N/A | :attr:`tm_zone` | abbreviation of timezone name | 5927db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5937db96d56Sopenharmony_ci | N/A | :attr:`tm_gmtoff` | offset east of UTC in seconds | 5947db96d56Sopenharmony_ci +-------+-------------------+---------------------------------+ 5957db96d56Sopenharmony_ci 5967db96d56Sopenharmony_ci Note that unlike the C structure, the month value is a range of [1, 12], not 5977db96d56Sopenharmony_ci [0, 11]. 5987db96d56Sopenharmony_ci 5997db96d56Sopenharmony_ci In calls to :func:`mktime`, :attr:`tm_isdst` may be set to 1 when daylight 6007db96d56Sopenharmony_ci savings time is in effect, and 0 when it is not. A value of -1 indicates that 6017db96d56Sopenharmony_ci this is not known, and will usually result in the correct state being filled in. 6027db96d56Sopenharmony_ci 6037db96d56Sopenharmony_ci When a tuple with an incorrect length is passed to a function expecting a 6047db96d56Sopenharmony_ci :class:`struct_time`, or having elements of the wrong type, a 6057db96d56Sopenharmony_ci :exc:`TypeError` is raised. 6067db96d56Sopenharmony_ci 6077db96d56Sopenharmony_ci.. function:: time() -> float 6087db96d56Sopenharmony_ci 6097db96d56Sopenharmony_ci Return the time in seconds since the epoch_ as a floating point 6107db96d56Sopenharmony_ci number. The handling of `leap seconds`_ is platform dependent. 6117db96d56Sopenharmony_ci On Windows and most Unix systems, the leap seconds are not counted towards 6127db96d56Sopenharmony_ci the time in seconds since the epoch_. This is commonly referred to as `Unix 6137db96d56Sopenharmony_ci time <https://en.wikipedia.org/wiki/Unix_time>`_. 6147db96d56Sopenharmony_ci 6157db96d56Sopenharmony_ci Note that even though the time is always returned as a floating point 6167db96d56Sopenharmony_ci number, not all systems provide time with a better precision than 1 second. 6177db96d56Sopenharmony_ci While this function normally returns non-decreasing values, it can return a 6187db96d56Sopenharmony_ci lower value than a previous call if the system clock has been set back 6197db96d56Sopenharmony_ci between the two calls. 6207db96d56Sopenharmony_ci 6217db96d56Sopenharmony_ci The number returned by :func:`.time` may be converted into a more common 6227db96d56Sopenharmony_ci time format (i.e. year, month, day, hour, etc...) in UTC by passing it to 6237db96d56Sopenharmony_ci :func:`gmtime` function or in local time by passing it to the 6247db96d56Sopenharmony_ci :func:`localtime` function. In both cases a 6257db96d56Sopenharmony_ci :class:`struct_time` object is returned, from which the components 6267db96d56Sopenharmony_ci of the calendar date may be accessed as attributes. 6277db96d56Sopenharmony_ci 6287db96d56Sopenharmony_ci Use :func:`time_ns` to avoid the precision loss caused by the :class:`float` 6297db96d56Sopenharmony_ci type. 6307db96d56Sopenharmony_ci 6317db96d56Sopenharmony_ci 6327db96d56Sopenharmony_ci.. function:: time_ns() -> int 6337db96d56Sopenharmony_ci 6347db96d56Sopenharmony_ci Similar to :func:`~time.time` but returns time as an integer number of 6357db96d56Sopenharmony_ci nanoseconds since the epoch_. 6367db96d56Sopenharmony_ci 6377db96d56Sopenharmony_ci .. versionadded:: 3.7 6387db96d56Sopenharmony_ci 6397db96d56Sopenharmony_ci 6407db96d56Sopenharmony_ci.. function:: thread_time() -> float 6417db96d56Sopenharmony_ci 6427db96d56Sopenharmony_ci .. index:: 6437db96d56Sopenharmony_ci single: CPU time 6447db96d56Sopenharmony_ci single: processor time 6457db96d56Sopenharmony_ci single: benchmarking 6467db96d56Sopenharmony_ci 6477db96d56Sopenharmony_ci Return the value (in fractional seconds) of the sum of the system and user 6487db96d56Sopenharmony_ci CPU time of the current thread. It does not include time elapsed during 6497db96d56Sopenharmony_ci sleep. It is thread-specific by definition. The reference point of the 6507db96d56Sopenharmony_ci returned value is undefined, so that only the difference between the results 6517db96d56Sopenharmony_ci of two calls in the same thread is valid. 6527db96d56Sopenharmony_ci 6537db96d56Sopenharmony_ci Use :func:`thread_time_ns` to avoid the precision loss caused by the 6547db96d56Sopenharmony_ci :class:`float` type. 6557db96d56Sopenharmony_ci 6567db96d56Sopenharmony_ci .. availability:: Linux, Unix, Windows. 6577db96d56Sopenharmony_ci 6587db96d56Sopenharmony_ci Unix systems supporting ``CLOCK_THREAD_CPUTIME_ID``. 6597db96d56Sopenharmony_ci 6607db96d56Sopenharmony_ci .. versionadded:: 3.7 6617db96d56Sopenharmony_ci 6627db96d56Sopenharmony_ci 6637db96d56Sopenharmony_ci.. function:: thread_time_ns() -> int 6647db96d56Sopenharmony_ci 6657db96d56Sopenharmony_ci Similar to :func:`thread_time` but return time as nanoseconds. 6667db96d56Sopenharmony_ci 6677db96d56Sopenharmony_ci .. versionadded:: 3.7 6687db96d56Sopenharmony_ci 6697db96d56Sopenharmony_ci 6707db96d56Sopenharmony_ci.. function:: tzset() 6717db96d56Sopenharmony_ci 6727db96d56Sopenharmony_ci Reset the time conversion rules used by the library routines. The environment 6737db96d56Sopenharmony_ci variable :envvar:`TZ` specifies how this is done. It will also set the variables 6747db96d56Sopenharmony_ci ``tzname`` (from the :envvar:`TZ` environment variable), ``timezone`` (non-DST 6757db96d56Sopenharmony_ci seconds West of UTC), ``altzone`` (DST seconds west of UTC) and ``daylight`` 6767db96d56Sopenharmony_ci (to 0 if this timezone does not have any daylight saving time rules, or to 6777db96d56Sopenharmony_ci nonzero if there is a time, past, present or future when daylight saving time 6787db96d56Sopenharmony_ci applies). 6797db96d56Sopenharmony_ci 6807db96d56Sopenharmony_ci .. availability:: Unix. 6817db96d56Sopenharmony_ci 6827db96d56Sopenharmony_ci .. note:: 6837db96d56Sopenharmony_ci 6847db96d56Sopenharmony_ci Although in many cases, changing the :envvar:`TZ` environment variable may 6857db96d56Sopenharmony_ci affect the output of functions like :func:`localtime` without calling 6867db96d56Sopenharmony_ci :func:`tzset`, this behavior should not be relied on. 6877db96d56Sopenharmony_ci 6887db96d56Sopenharmony_ci The :envvar:`TZ` environment variable should contain no whitespace. 6897db96d56Sopenharmony_ci 6907db96d56Sopenharmony_ci The standard format of the :envvar:`TZ` environment variable is (whitespace 6917db96d56Sopenharmony_ci added for clarity):: 6927db96d56Sopenharmony_ci 6937db96d56Sopenharmony_ci std offset [dst [offset [,start[/time], end[/time]]]] 6947db96d56Sopenharmony_ci 6957db96d56Sopenharmony_ci Where the components are: 6967db96d56Sopenharmony_ci 6977db96d56Sopenharmony_ci ``std`` and ``dst`` 6987db96d56Sopenharmony_ci Three or more alphanumerics giving the timezone abbreviations. These will be 6997db96d56Sopenharmony_ci propagated into time.tzname 7007db96d56Sopenharmony_ci 7017db96d56Sopenharmony_ci ``offset`` 7027db96d56Sopenharmony_ci The offset has the form: ``± hh[:mm[:ss]]``. This indicates the value 7037db96d56Sopenharmony_ci added the local time to arrive at UTC. If preceded by a '-', the timezone 7047db96d56Sopenharmony_ci is east of the Prime Meridian; otherwise, it is west. If no offset follows 7057db96d56Sopenharmony_ci dst, summer time is assumed to be one hour ahead of standard time. 7067db96d56Sopenharmony_ci 7077db96d56Sopenharmony_ci ``start[/time], end[/time]`` 7087db96d56Sopenharmony_ci Indicates when to change to and back from DST. The format of the 7097db96d56Sopenharmony_ci start and end dates are one of the following: 7107db96d56Sopenharmony_ci 7117db96d56Sopenharmony_ci :samp:`J{n}` 7127db96d56Sopenharmony_ci The Julian day *n* (1 <= *n* <= 365). Leap days are not counted, so in 7137db96d56Sopenharmony_ci all years February 28 is day 59 and March 1 is day 60. 7147db96d56Sopenharmony_ci 7157db96d56Sopenharmony_ci :samp:`{n}` 7167db96d56Sopenharmony_ci The zero-based Julian day (0 <= *n* <= 365). Leap days are counted, and 7177db96d56Sopenharmony_ci it is possible to refer to February 29. 7187db96d56Sopenharmony_ci 7197db96d56Sopenharmony_ci :samp:`M{m}.{n}.{d}` 7207db96d56Sopenharmony_ci The *d*'th day (0 <= *d* <= 6) of week *n* of month *m* of the year (1 7217db96d56Sopenharmony_ci <= *n* <= 5, 1 <= *m* <= 12, where week 5 means "the last *d* day in 7227db96d56Sopenharmony_ci month *m*" which may occur in either the fourth or the fifth 7237db96d56Sopenharmony_ci week). Week 1 is the first week in which the *d*'th day occurs. Day 7247db96d56Sopenharmony_ci zero is a Sunday. 7257db96d56Sopenharmony_ci 7267db96d56Sopenharmony_ci ``time`` has the same format as ``offset`` except that no leading sign 7277db96d56Sopenharmony_ci ('-' or '+') is allowed. The default, if time is not given, is 02:00:00. 7287db96d56Sopenharmony_ci 7297db96d56Sopenharmony_ci :: 7307db96d56Sopenharmony_ci 7317db96d56Sopenharmony_ci >>> os.environ['TZ'] = 'EST+05EDT,M4.1.0,M10.5.0' 7327db96d56Sopenharmony_ci >>> time.tzset() 7337db96d56Sopenharmony_ci >>> time.strftime('%X %x %Z') 7347db96d56Sopenharmony_ci '02:07:36 05/08/03 EDT' 7357db96d56Sopenharmony_ci >>> os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0' 7367db96d56Sopenharmony_ci >>> time.tzset() 7377db96d56Sopenharmony_ci >>> time.strftime('%X %x %Z') 7387db96d56Sopenharmony_ci '16:08:12 05/08/03 AEST' 7397db96d56Sopenharmony_ci 7407db96d56Sopenharmony_ci On many Unix systems (including \*BSD, Linux, Solaris, and Darwin), it is more 7417db96d56Sopenharmony_ci convenient to use the system's zoneinfo (:manpage:`tzfile(5)`) database to 7427db96d56Sopenharmony_ci specify the timezone rules. To do this, set the :envvar:`TZ` environment 7437db96d56Sopenharmony_ci variable to the path of the required timezone datafile, relative to the root of 7447db96d56Sopenharmony_ci the systems 'zoneinfo' timezone database, usually located at 7457db96d56Sopenharmony_ci :file:`/usr/share/zoneinfo`. For example, ``'US/Eastern'``, 7467db96d56Sopenharmony_ci ``'Australia/Melbourne'``, ``'Egypt'`` or ``'Europe/Amsterdam'``. :: 7477db96d56Sopenharmony_ci 7487db96d56Sopenharmony_ci >>> os.environ['TZ'] = 'US/Eastern' 7497db96d56Sopenharmony_ci >>> time.tzset() 7507db96d56Sopenharmony_ci >>> time.tzname 7517db96d56Sopenharmony_ci ('EST', 'EDT') 7527db96d56Sopenharmony_ci >>> os.environ['TZ'] = 'Egypt' 7537db96d56Sopenharmony_ci >>> time.tzset() 7547db96d56Sopenharmony_ci >>> time.tzname 7557db96d56Sopenharmony_ci ('EET', 'EEST') 7567db96d56Sopenharmony_ci 7577db96d56Sopenharmony_ci 7587db96d56Sopenharmony_ci.. _time-clock-id-constants: 7597db96d56Sopenharmony_ci 7607db96d56Sopenharmony_ciClock ID Constants 7617db96d56Sopenharmony_ci------------------ 7627db96d56Sopenharmony_ci 7637db96d56Sopenharmony_ciThese constants are used as parameters for :func:`clock_getres` and 7647db96d56Sopenharmony_ci:func:`clock_gettime`. 7657db96d56Sopenharmony_ci 7667db96d56Sopenharmony_ci.. data:: CLOCK_BOOTTIME 7677db96d56Sopenharmony_ci 7687db96d56Sopenharmony_ci Identical to :data:`CLOCK_MONOTONIC`, except it also includes any time that 7697db96d56Sopenharmony_ci the system is suspended. 7707db96d56Sopenharmony_ci 7717db96d56Sopenharmony_ci This allows applications to get a suspend-aware monotonic clock without 7727db96d56Sopenharmony_ci having to deal with the complications of :data:`CLOCK_REALTIME`, which may 7737db96d56Sopenharmony_ci have discontinuities if the time is changed using ``settimeofday()`` or 7747db96d56Sopenharmony_ci similar. 7757db96d56Sopenharmony_ci 7767db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.39. 7777db96d56Sopenharmony_ci 7787db96d56Sopenharmony_ci .. versionadded:: 3.7 7797db96d56Sopenharmony_ci 7807db96d56Sopenharmony_ci 7817db96d56Sopenharmony_ci.. data:: CLOCK_HIGHRES 7827db96d56Sopenharmony_ci 7837db96d56Sopenharmony_ci The Solaris OS has a ``CLOCK_HIGHRES`` timer that attempts to use an optimal 7847db96d56Sopenharmony_ci hardware source, and may give close to nanosecond resolution. 7857db96d56Sopenharmony_ci ``CLOCK_HIGHRES`` is the nonadjustable, high-resolution clock. 7867db96d56Sopenharmony_ci 7877db96d56Sopenharmony_ci .. availability:: Solaris. 7887db96d56Sopenharmony_ci 7897db96d56Sopenharmony_ci .. versionadded:: 3.3 7907db96d56Sopenharmony_ci 7917db96d56Sopenharmony_ci 7927db96d56Sopenharmony_ci.. data:: CLOCK_MONOTONIC 7937db96d56Sopenharmony_ci 7947db96d56Sopenharmony_ci Clock that cannot be set and represents monotonic time since some unspecified 7957db96d56Sopenharmony_ci starting point. 7967db96d56Sopenharmony_ci 7977db96d56Sopenharmony_ci .. availability:: Unix. 7987db96d56Sopenharmony_ci 7997db96d56Sopenharmony_ci .. versionadded:: 3.3 8007db96d56Sopenharmony_ci 8017db96d56Sopenharmony_ci 8027db96d56Sopenharmony_ci.. data:: CLOCK_MONOTONIC_RAW 8037db96d56Sopenharmony_ci 8047db96d56Sopenharmony_ci Similar to :data:`CLOCK_MONOTONIC`, but provides access to a raw 8057db96d56Sopenharmony_ci hardware-based time that is not subject to NTP adjustments. 8067db96d56Sopenharmony_ci 8077db96d56Sopenharmony_ci .. availability:: Linux >= 2.6.28, macOS >= 10.12. 8087db96d56Sopenharmony_ci 8097db96d56Sopenharmony_ci .. versionadded:: 3.3 8107db96d56Sopenharmony_ci 8117db96d56Sopenharmony_ci 8127db96d56Sopenharmony_ci.. data:: CLOCK_PROCESS_CPUTIME_ID 8137db96d56Sopenharmony_ci 8147db96d56Sopenharmony_ci High-resolution per-process timer from the CPU. 8157db96d56Sopenharmony_ci 8167db96d56Sopenharmony_ci .. availability:: Unix. 8177db96d56Sopenharmony_ci 8187db96d56Sopenharmony_ci .. versionadded:: 3.3 8197db96d56Sopenharmony_ci 8207db96d56Sopenharmony_ci 8217db96d56Sopenharmony_ci.. data:: CLOCK_PROF 8227db96d56Sopenharmony_ci 8237db96d56Sopenharmony_ci High-resolution per-process timer from the CPU. 8247db96d56Sopenharmony_ci 8257db96d56Sopenharmony_ci .. availability:: FreeBSD, NetBSD >= 7, OpenBSD. 8267db96d56Sopenharmony_ci 8277db96d56Sopenharmony_ci .. versionadded:: 3.7 8287db96d56Sopenharmony_ci 8297db96d56Sopenharmony_ci.. data:: CLOCK_TAI 8307db96d56Sopenharmony_ci 8317db96d56Sopenharmony_ci `International Atomic Time <https://www.nist.gov/pml/time-and-frequency-division/nist-time-frequently-asked-questions-faq#tai>`_ 8327db96d56Sopenharmony_ci 8337db96d56Sopenharmony_ci The system must have a current leap second table in order for this to give 8347db96d56Sopenharmony_ci the correct answer. PTP or NTP software can maintain a leap second table. 8357db96d56Sopenharmony_ci 8367db96d56Sopenharmony_ci .. availability:: Linux. 8377db96d56Sopenharmony_ci 8387db96d56Sopenharmony_ci .. versionadded:: 3.9 8397db96d56Sopenharmony_ci 8407db96d56Sopenharmony_ci.. data:: CLOCK_THREAD_CPUTIME_ID 8417db96d56Sopenharmony_ci 8427db96d56Sopenharmony_ci Thread-specific CPU-time clock. 8437db96d56Sopenharmony_ci 8447db96d56Sopenharmony_ci .. availability:: Unix. 8457db96d56Sopenharmony_ci 8467db96d56Sopenharmony_ci .. versionadded:: 3.3 8477db96d56Sopenharmony_ci 8487db96d56Sopenharmony_ci 8497db96d56Sopenharmony_ci.. data:: CLOCK_UPTIME 8507db96d56Sopenharmony_ci 8517db96d56Sopenharmony_ci Time whose absolute value is the time the system has been running and not 8527db96d56Sopenharmony_ci suspended, providing accurate uptime measurement, both absolute and 8537db96d56Sopenharmony_ci interval. 8547db96d56Sopenharmony_ci 8557db96d56Sopenharmony_ci .. availability:: FreeBSD, OpenBSD >= 5.5. 8567db96d56Sopenharmony_ci 8577db96d56Sopenharmony_ci .. versionadded:: 3.7 8587db96d56Sopenharmony_ci 8597db96d56Sopenharmony_ci 8607db96d56Sopenharmony_ci.. data:: CLOCK_UPTIME_RAW 8617db96d56Sopenharmony_ci 8627db96d56Sopenharmony_ci Clock that increments monotonically, tracking the time since an arbitrary 8637db96d56Sopenharmony_ci point, unaffected by frequency or time adjustments and not incremented while 8647db96d56Sopenharmony_ci the system is asleep. 8657db96d56Sopenharmony_ci 8667db96d56Sopenharmony_ci .. availability:: macOS >= 10.12. 8677db96d56Sopenharmony_ci 8687db96d56Sopenharmony_ci .. versionadded:: 3.8 8697db96d56Sopenharmony_ci 8707db96d56Sopenharmony_ciThe following constant is the only parameter that can be sent to 8717db96d56Sopenharmony_ci:func:`clock_settime`. 8727db96d56Sopenharmony_ci 8737db96d56Sopenharmony_ci 8747db96d56Sopenharmony_ci.. data:: CLOCK_REALTIME 8757db96d56Sopenharmony_ci 8767db96d56Sopenharmony_ci System-wide real-time clock. Setting this clock requires appropriate 8777db96d56Sopenharmony_ci privileges. 8787db96d56Sopenharmony_ci 8797db96d56Sopenharmony_ci .. availability:: Unix. 8807db96d56Sopenharmony_ci 8817db96d56Sopenharmony_ci .. versionadded:: 3.3 8827db96d56Sopenharmony_ci 8837db96d56Sopenharmony_ci 8847db96d56Sopenharmony_ci.. _time-timezone-constants: 8857db96d56Sopenharmony_ci 8867db96d56Sopenharmony_ciTimezone Constants 8877db96d56Sopenharmony_ci------------------- 8887db96d56Sopenharmony_ci 8897db96d56Sopenharmony_ci.. data:: altzone 8907db96d56Sopenharmony_ci 8917db96d56Sopenharmony_ci The offset of the local DST timezone, in seconds west of UTC, if one is defined. 8927db96d56Sopenharmony_ci This is negative if the local DST timezone is east of UTC (as in Western Europe, 8937db96d56Sopenharmony_ci including the UK). Only use this if ``daylight`` is nonzero. See note below. 8947db96d56Sopenharmony_ci 8957db96d56Sopenharmony_ci.. data:: daylight 8967db96d56Sopenharmony_ci 8977db96d56Sopenharmony_ci Nonzero if a DST timezone is defined. See note below. 8987db96d56Sopenharmony_ci 8997db96d56Sopenharmony_ci.. data:: timezone 9007db96d56Sopenharmony_ci 9017db96d56Sopenharmony_ci The offset of the local (non-DST) timezone, in seconds west of UTC (negative in 9027db96d56Sopenharmony_ci most of Western Europe, positive in the US, zero in the UK). See note below. 9037db96d56Sopenharmony_ci 9047db96d56Sopenharmony_ci.. data:: tzname 9057db96d56Sopenharmony_ci 9067db96d56Sopenharmony_ci A tuple of two strings: the first is the name of the local non-DST timezone, the 9077db96d56Sopenharmony_ci second is the name of the local DST timezone. If no DST timezone is defined, 9087db96d56Sopenharmony_ci the second string should not be used. See note below. 9097db96d56Sopenharmony_ci 9107db96d56Sopenharmony_ci.. note:: 9117db96d56Sopenharmony_ci 9127db96d56Sopenharmony_ci For the above Timezone constants (:data:`altzone`, :data:`daylight`, :data:`timezone`, 9137db96d56Sopenharmony_ci and :data:`tzname`), the value is determined by the timezone rules in effect 9147db96d56Sopenharmony_ci at module load time or the last time :func:`tzset` is called and may be incorrect 9157db96d56Sopenharmony_ci for times in the past. It is recommended to use the :attr:`tm_gmtoff` and 9167db96d56Sopenharmony_ci :attr:`tm_zone` results from :func:`localtime` to obtain timezone information. 9177db96d56Sopenharmony_ci 9187db96d56Sopenharmony_ci 9197db96d56Sopenharmony_ci.. seealso:: 9207db96d56Sopenharmony_ci 9217db96d56Sopenharmony_ci Module :mod:`datetime` 9227db96d56Sopenharmony_ci More object-oriented interface to dates and times. 9237db96d56Sopenharmony_ci 9247db96d56Sopenharmony_ci Module :mod:`locale` 9257db96d56Sopenharmony_ci Internationalization services. The locale setting affects the interpretation 9267db96d56Sopenharmony_ci of many format specifiers in :func:`strftime` and :func:`strptime`. 9277db96d56Sopenharmony_ci 9287db96d56Sopenharmony_ci Module :mod:`calendar` 9297db96d56Sopenharmony_ci General calendar-related functions. :func:`~calendar.timegm` is the 9307db96d56Sopenharmony_ci inverse of :func:`gmtime` from this module. 9317db96d56Sopenharmony_ci 9327db96d56Sopenharmony_ci.. rubric:: Footnotes 9337db96d56Sopenharmony_ci 9347db96d56Sopenharmony_ci.. [1] The use of ``%Z`` is now deprecated, but the ``%z`` escape that expands to the 9357db96d56Sopenharmony_ci preferred hour/minute offset is not supported by all ANSI C libraries. Also, a 9367db96d56Sopenharmony_ci strict reading of the original 1982 :rfc:`822` standard calls for a two-digit 9377db96d56Sopenharmony_ci year (``%y`` rather than ``%Y``), but practice moved to 4-digit years long before the 9387db96d56Sopenharmony_ci year 2000. After that, :rfc:`822` became obsolete and the 4-digit year has 9397db96d56Sopenharmony_ci been first recommended by :rfc:`1123` and then mandated by :rfc:`2822`. 940