Функция strftime() модуля time в python

Basic Examples¶

The following example shows how the
can be used to compare three different expressions:

$ python3 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 5: 30.2 usec per loop
$ python3 -m timeit '"-".join()'
10000 loops, best of 5: 27.5 usec per loop
$ python3 -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 5: 23.2 usec per loop

This can be achieved from the with:

>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.3018611848820001
>>> timeit.timeit('"-".join()', number=10000)
0.2727368790656328
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.23702679807320237

A callable can also be passed from the :

>>> timeit.timeit(lambda "-".join(map(str, range(100))), number=10000)
0.19665591977536678

Время выполнения программы

Существует множество разных задач, для решения которых нужно найти время, потраченное на работу программы либо отдельных ее блоков. Чтобы найти данную величину, достаточно посчитать разницу в секундах между точкой старта определенной функции и местом, где она завершает свою работу. В следующем примере демонстрируется применение методов time() для получения текущего времени, чтобы в конечном итоге выявить, как долго работал блок кода. Метод sleep() здесь увеличивает время выполнения программы на 5 секунд.

import time
start = time.time()
time.sleep(5)
finish = time.time()
result = finish - start
print("Program time: " + str(result) + " seconds.")

Program time: 5.005090236663818 seconds.

Несмотря на простоту вышеописанного подхода, использовать его в серьезных целях, где требуется точный и независимый от ОС результат, не рекомендуется. Все дело в том, что числовое значение времени, получаемое таким образом, может иметь погрешности за счет внутренних особенностей работы компьютера, в среде которого выполняется программа. Например, системные часы могут быть подкорректированы вручную пользователем во время выполнения программы. Корректировка может произойти и автоматически, если настроена синхронизация системных часов по NTP.

Таким образом, может случиться такая ситуация, что функция вернет значение меньшее, чем при предыдущем вызове.

monotonic

По этой причине лучше всего использовать метод monotonic(), впервые появившийся в версии Python 3.3 на некоторых платформах, а начиная с выпуска 3.5 ставший доступным абсолютно везде. Его главной особенностью является точное представление измеряемого количества времени, вне зависимости от работы ОС и текущей платформы. Используемый таймер никогда не вернет при повторном вызове метода значение, которое будет меньше предыдущего. Это позволяет избежать многих ошибок, а также неожиданного поведения.

import time
start = time.monotonic()
time.sleep(15)
result = time.monotonic() - start
print("Program time: {:>.3f}".format(result) + " seconds.")

Program time: 15.012 seconds.

В примере программы, описанном выше, продемонстрирована работа функции monotonic(). Принцип ее применения такой же, как и в предыдущем примере, однако здесь результат обладает гарантированной точностью и независим от внешних условий. Для отображения времени в более комфортной форме используется небольшое форматирование результата.

Таймер Python с использованием потоковой передачи

Когда мы хотим выполнить какую-то операцию или хотим, чтобы наша функция выполнялась через определенное время, мы используем класс Python Timer. Класс timer является подклассом класса threading. Технически можно сказать, что мы создаем объекты таймера, когда хотим, чтобы действия (функции) были ограничены временем.

Например, предположим, что мы хотим организовать викторину, где участник должен ответить на каждый вопрос за 10 секунд. Здесь мы можем создать таймер, который будет работать в фоновом режиме, а тем временем участник будет думать над ответом. Теперь давайте разберемся, как создать объект timer .

Синтаксис класса Timer в Python

Если вы не поняли, что делает класс Timer, вы можете думать об этом следующим образом – Класс Timer вызывает функцию через заданное количество секунд.

Чтобы запустить таймер, нам нужно вызвать start()(как и обычные потоки), а чтобы остановить таймер, пока он все еще находится в фоновом режиме, мы можем вызвать cancel().

Чтобы использовать класс Timer, нам нужно импортировать класс threading

<сильная>резьба.Таймер(интервал, функция,,)

Параметры-

Интервал– Время (в секундах), которое вы хотите подождать перед вызовом следующей функции. Он может быть либо в float, либо в integer. Например, в течение 3 секунд.

Функция – Функция, которую вы хотите вызвать через указанный промежуток времени.

Распространенным способом описания параметров *args и **kwargs является- создание объекта таймера, который запускает функцию с аргументами’ args’ и аргументами ключевых слов’ kwargs’ после того, как прошли интервальные секунды. Args должны быть в виде списка и ключевого слова args или kwargs в виде словаря .

Методы в классе Timer

  1. start() – Это означает начало выполнения таймера.
  2. Cancel ()– Во время выполнения таймера мы можем вызвать функцию cancel, если хотим остановить его ().

Создание объекта таймера

<сильный>а. Понимание основ

Чтобы понять, как работает объект Timer, давайте создадим небольшую программу, которая поможет нам понять основы класса.

# Importing the Timer subclass from the threading Class
from threading import Timer

# creating a basic function that will print "hello"
def hello():
    print ("hello, world")

# creating the object of the Timer subclass
# Here, 5 sec means that the execution of the after 5 seconds(interval=5.0,)

# starting the execution
t.start() # after 30 seconds, "hello, world" will be printed
Output-
hello, world

Вы лучше поймете функционирование вышеприведенной программы, когда попытаетесь запустить ее самостоятельно href=”https://en.wikipedia.org/wiki/System”>система. href=”https://en.wikipedia.org/wiki/System”>система.

<сильный>б. Использование метода отмены

Давайте посмотрим, как использовать функцию cancel() класса Timer.

# Importing the Timer subclass from the threading Class
from threading import Timer

# creating a basic function that will print "hello"
def hello():
    print ("hello world")
    
# creating the object of the Timer subclass
# Here, 5 sec means that the execution of the after 5 seconds(interval=5.0,)
    
# starting the execution
t.start() # after 30 seconds, "hello, world" will be printed

print("Execution begins")

# cancelling the execution of the 'hello' function
t.cancel()
print("END")
Execution begins 
END

c. Как использовать параметр ‘args’ класса python timer

Когда нам нужно дать аргументы функции, которую нужно вызвать, мы используем параметр args. Мы должны дать аргумент args в массиве.

import threading

# To take multiple inputs we can use *before the parameter.
def print_name(*names):
    # From the array of names pick one name and print it
    for name in names:
        print("Hello",name)

# In the args parameter, give an array of names .Timer(3, print_name,)

# start the execution
t.start()
print("Execution begins...")
Execution begins...
Hello Ashwini
Hello Vandy
Hello Arijit

Теперь, когда мы много говорили о времени, в качестве бонуса давайте сделаем программу, которая будет действовать как таймер обратного отсчета.

Project details

Homepage

License: BSD License (BSD)

Author: Vincent Driessen

Classifiers

  • Development Status

    4 — Beta

  • Environment

    • Console

    • MacOS X

    • No Input/Output (Daemon)

    • Other Environment

    • Plugins

    • Web Environment

    • Win32 (MS Windows)

  • Framework

    • Buildout

    • CherryPy

    • Django

    • Plone

    • Pylons

  • Intended Audience

    • Developers

    • Education

    • End Users/Desktop

    • Financial and Insurance Industry

    • Healthcare Industry

    • Information Technology

    • Legal Industry

    • Manufacturing

    • Science/Research

  • License

    OSI Approved :: BSD License

  • Natural Language

    English

  • Programming Language

    • Python

    • Python :: 2

    • Python :: 2.6

    • Python :: 2.7

    • Python :: 3.2

    • Python :: 3.3

    • Python :: Implementation :: PyPy

  • Topic

    • Internet

    • Internet :: WWW/HTTP

    • Office/Business

    • Scientific/Engineering

    • Software Development

    • System

    • Terminals

    • Utilities

Measuring Performance

You can use to measure the performance of your program.

The way you do this is to use which, as the name suggests, provides a performance counter with a high resolution to measure short distances of time.

To use , you place a counter before your code begins execution as well as after your code’s execution completes:

>>>

First, captures the moment before you call the function. captures the moment after the function returns. The function’s total execution time took seconds.

Technical Detail: Python 3.7 introduced , which works the same as , but uses nanoseconds instead of seconds.

(or ) is the most precise way to measure the performance of your code using one execution. However, if you’re trying to accurately gauge the performance of a code snippet, I recommend using the Python module.

Преобразование временных меток

Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках Unix.

Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.

Для ее получения в «Питоне» пригодится модуль time, следовательно, первая строка будет :

Функция  возвращает пользователю число с плавающей запятой и с временной меткой Unix. 

На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.

Parsing and Formatting Times¶

The two functions strptime() and strftime() convert
between struct_time and string representations of time values. There
is a long list of formatting instructions available to support input
and output in different styles. The complete list is documented in the
library documentation for the time module.

This example converts the current time from a string, to a
struct_time instance, and back to a string.

import time

now = time.ctime()
print now
parsed = time.strptime(now)
print parsed
print time.strftime("%a %b %d %H:%M:%S %Y", parsed)

The output string is not exactly like the input, since the day of the
month is prefixed with a zero.

Вызов sleep() через time.sleep()

В Python есть встроенная поддержка для погружения программы в сон. У модуля есть функция , что позволяет отсрочить выполнение вызываемого потока на указанное количество секунд.

Мы собрали ТОП Книг для Python программиста которые помогут быстро изучить язык программирования Python.
Список книг: Книги по Python

Далее дан пример использования :

Python

import time
time.sleep(3) # Сон в 3 секунды

1
2

importtime

time.sleep(3)# Сон в 3 секунды

При запуске кода из консоли, задержку нужно проводить перед вводом нового оператора в REPL.

Вы можете протестировать, как долго продлиться сон с помощью модуля Python timeit:

Shell

$ python3 -m timeit -n 3 «import time; time.sleep(3)»
3 loops, best of 3: 3 sec per loop

1
2

$python3-mtimeit-n3″import time; time.sleep(3)»

3loops,best of33sec per loop

Здесь модуль запускается с параметром , что указывает , сколько раз выполнять последующий оператор. Можно заметить, что выполнил оператор 3 раза, а лучшее время длилось 3 секунды, чего и следовало ожидать.

По умолчанию будет запускать код миллион раз. Если бы вы запустили вышеуказанный код, оставив значение по умолчанию, тогда при 3 секундах на итерацию код завис бы примерно на 34 дня! У модуля есть несколько других настроек для командной строки, с которыми можно ознакомиться в .

Создадим что-то более практичное. Системному администратору всегда нужно быть в курсе, если какой-то из сайтов упал. Вы бы хотели иметь возможность проверить код состояния сайта регулярно, но запрашивать веб сервер постоянно нельзя, ведь это сильно повлияет на производительность. В Python одним из простых способов совершить такую проверку является использование системного вызова :

Python

import time
import urllib.request
import urllib.error

def uptime_bot(url):
while True:
try:
conn = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
# Отправка admin / log
print(f’HTTPError: {e.code} для {url}’)
except urllib.error.URLError as e:
# Отправка admin / log
print(f’URLError: {e.code} для {url}’)
else:
# Сайт поднят
print(f'{url} поднят’)
time.sleep(60)

if __name__ == ‘__main__’:
url = ‘http://www.google.com/py’
uptime_bot(url)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

19
20
21
22

importtime

importurllib.request

importurllib.error

defuptime_bot(url)

whileTrue

try

conn=urllib.request.urlopen(url)

excepturllib.error.HTTPError ase

# Отправка admin / log

print(f’HTTPError: {e.code} для {url}’)

excepturllib.error.URLError ase

# Отправка admin / log

print(f’URLError: {e.code} для {url}’)

else

# Сайт поднят

print(f'{url} поднят’)

if__name__==’__main__’

url=’http://www.google.com/py’

uptime_bot(url)

Здесь создается , что принимает URL в качестве аргумента. Затем функция пытается открыть данный URL c . При возникновении или программа перехватывает ошибку и выводит на экран. На практике вам, скорее всего, придется зафиксировать ошибку и отправить письмо веб-мастеру или системному администратору.

Если ошибок нет, код спокойно выполняется. Вне зависимости от того, что произойдет, программа уходит в сон на 60 секунд. Это значит, что доступ к сайту будет раз за минуту. URL, используемый в примере, содержит ошибки. Ежеминутный вывод на консоли выглядит следующим образом:

Shell

HTTPError: 404 для http://www.google.com/py

1 HTTPError404дляhttpwww.compy

Попробуйте обновить код, используя проверенный хороший URL, к примеру https://www.google.com/. После этого вы можете перезапустить программу и проверить, что изменилось. Также можно попробовать обновить код для отправки сообщения или записи об ошибке. Для получения более подробной информации можете ознакомиться со статьями отправка писем smtp и логирование.

Список кодов форматов

В таблице ниже показаны все коды формата, которые вы можете использовать:

Директива Значение Пример
% a Сокращенное название дня недели. Вс, пн, …
% А Полное название дня недели. Воскресенье понедельник, …
%w День недели в виде десятичного числа. 0, 1, …, 6
% d День месяца в виде десятичной дроби с нулями. 01, 02, …, 31
% -d День месяца в виде десятичного числа. 1, 2, …, 30
% b Сокращенное название месяца. Янв, Фев, …, Дек
% B Полное название месяца. Январь Февраль, …
% m Месяц как десятичное число с нулями. 01, 02, …, 12
% -m Месяц как десятичное число. 1, 2, …, 12
% y Год без века как десятичное число с нулями. 00, 01, …, 99
% -y Год без столетия как десятичное число. 0, 1, …, 99
% Y Год со столетием в виде десятичного числа. 2013, 2019 и т. Д.
%H Час (в 24-часовом формате) как десятичное число с нулями. 00, 01, …, 23
%-H Час (24-часовой формат) как десятичное число. 0, 1, …, 23
%I Час (12-часовой формат) как десятичное число с нулями. 01, 02, …, 12
%-I Час (12-часовой формат) в виде десятичного числа. 1, 2, … 12
%p Локализация AM или PM. до полудня, после полудня
% M Минута в виде десятичного числа с нулями. 00, 01, …, 59
% -M Минута как десятичное число. 0, 1, …, 59
% S Второй — десятичное число с нулями. 00, 01, …, 59
% -S Секунда как десятичное число. 0, 1, …, 59
% f Микросекунда в виде десятичного числа с нулями слева. 000000–999999
%z Смещение UTC в форме + ЧЧММ или -ЧЧММ.
%Z Название часового пояса.
% j День года в виде десятичного числа с нулями. 001, 002, …, 366
% -j День года в виде десятичного числа. 1, 2, …, 366
% U Номер недели в году (воскресенье как первый день недели). Все дни нового года, предшествующие первому воскресенью, считаются нулевой неделей. 00, 01, …, 53
%W Номер недели в году (понедельник как первый день недели). Все дни нового года, предшествующие первому понедельнику, считаются нулевой неделей. 00, 01, …, 53
% c Соответствующее представление даты и времени языкового стандарта. 30 сен, пн, 07:06:05 2013
%x Соответствующее представление даты языкового стандарта. 30.09.13
%X Соответствующее представление времени локали. 07:06:05
%% Буквальный символ «%». %

Сравните производительность блоков кода

Мы можем легко сравнить производительность нескольких блоков кода с помощью .

Мы будем использовать для этой цели таймер, используя .

Время, затрачиваемое на блок кода, будет текущим временем минус начальное время, взятое за эталон, которое вы можете передавать через переменные.

import timeit

start_time = timeit.default_timer()
function_1()
time_1 = timeit.default_timer() - start_time

start_time = timeit.default_timer()
function_2()
time_2 = timeit.default_timer() - start_time

print('Function 1 took', time_1)
print('Function 2 took', time_2)

Давайте протестируем 2 функции в массиве numpy и и посмотрим, как они сравниваются.

import timeit
import numpy as np

def time_range(size):
    for i in range(size):
        pass

def time_arange(size):
    np.arange(size)

if __name__ == '__main__':
    # For smaller arrays
    print('Array size: 1000')

    start_time = timeit.default_timer();
    time_range(1000)
    range_time_1 = timeit.default_timer() - start_time

    start_time = timeit.default_timer();
    time_arange(1000)
    arange_time_1 = timeit.default_timer() - start_time

    # For large arrays
    print('Array size: 1000000')

    start_time = timeit.default_timer();
    time_range(1000000)
    range_time_2 = timeit.default_timer() - start_time

    start_time = timeit.default_timer();
    time_arange(1000000)
    arange_time_2 = timeit.default_timer() - start_time

    print(f'size 1000: range() took {range_time_1}')
    print(f'size 1000: arange() took {arange_time_1}')
    print(f'size 1000000: range() took {range_time_2}')
    print(f'size 1000000: arange() took {arange_time_2}')

Выход

Array size: 1000
Array size: 1000000
size 1000: range() took 2.2970001737121493e-05
size 1000: arange() took 8.393999451072887e-06
size 1000000: range() took 0.02567379199899733
size 1000000: arange() took 0.0031752489994687494

Таким образом, мы могли легко использовать для сравнения производительности различных функций.

Range

If you want to iterate over a period, you can use the method:

Note

Supported units for are: , , ,
, , and

You can pass an amount for the passed unit to control the length of the gap:

You can also directly iterate over the instance,
the unit will be in this case:

You can check if a instance is inside a period using the keyword:

Testing

The testing methods allow you to set a instance (real or mock) to be returned
when a «now» instance is created.
The provided instance will be returned specifically under the following conditions:

  • A call to the method, ex. .
  • When the string «now» is passed to the method, ex.

If you don’t want to manually clear the mock (or you are afraid of forgetting),
you can use the provided contextmanager.

Limitations

Even though the class is a subclass of ,
there are some rare cases where it can’t replace the native class directly.
Here is a list (non-exhaustive) of the reported cases with a possible solution, if any:

  • will use the the function to determine the type of the object by default. To work around it you can register a new adapter:

  • (former ) and will use the the function to determine the type of the object by default. To work around it you can register a new adapter:

  • will use the method to store datetimes in the database. However, since is always timezone aware, the offset information will always be returned by raising an error, at least for MySQL databases. To work around it, you can either create your own or use the previous workaround for :

Вариант 1: Python strftime() для получения текущего времени

Функция Python strftime() может использоваться вместе с модулем datetime для получения текущей метки времени в надлежащей форме в соответствии с кодами формата.

Синтаксис:

datetime.now().strftime('format codes')

Таким образом, коды формата на самом деле являются предопределенными кодами, используемыми для правильного и стандартного представления метки времени.

Пример:

from datetime import datetime

current_timestamp = datetime.now() 
tym = current_timestamp.strftime("%H:%M:%S")
date = current_timestamp.strftime("%d-%m-%Y")
print("Current Time:",tym)
print("Current Date:",date)

В приведенном выше примере мы использовали для получения текущей метки времени, а затем передали его в функцию strftime() для представления метки времени в стандартном формате.

Мы использовали коды формата, имеющие следующие значения:

  • — представляет «часы» в 24-часовом формате.
  • — Представление минут в виде десятичного числа.
  • — представляет часть метки времени, равную «секундам».

Выход:

Current Time: 16:28:40
Current Date: 28-04-2020

Working with Time Zones¶

The functions for determining the current time depend on having the time zone
set, either by your program or by using a default time zone set for the
system. Changing the time zone does not change the actual time, just the way
it is represented.

To change the time zone, set the environment variable TZ, then
call tzset(). Using TZ, you can specify the time zone with a
lot of detail, right down to the start and stop times for daylight
savings time. It is usually easier to use the time zone name and let
the underlying libraries derive the other information, though.

This example program changes the time zone to a few different values
and shows how the changes affect other settings in the time module.

import time
import os

def show_zone_info():
    print '\tTZ    :', os.environ.get('TZ', '(not set)')
    print '\ttzname:', time.tzname
    print '\tZone  : %d (%d)' % (time.timezone, (time.timezone  3600))
    print '\tDST   :', time.daylight
    print '\tTime  :', time.ctime()
    print

print 'Default :'
show_zone_info()

for zone in  'US/Eastern', 'US/Pacific', 'GMT', 'Europe/Amsterdam' ]:
    os.environ'TZ' = zone
    time.tzset()
    print zone, ':'
    show_zone_info()

My default time zone is US/Eastern, so setting TZ to that has no
effect. The other zones used change the tzname, daylight flag, and
timezone offset value.

$ python time_timezone.py
Default :
    TZ    : (not set)
    tzname: ('EST', 'EDT')
    Zone  : 18000 (5)
    DST   : 1
    Time  : Sun Mar  9 13:06:53 2008

US/Eastern :
    TZ    : US/Eastern
    tzname: ('EST', 'EDT')
    Zone  : 18000 (5)
    DST   : 1
    Time  : Sun Mar  9 13:06:53 2008

US/Pacific :
    TZ    : US/Pacific
    tzname: ('PST', 'PDT')
    Zone  : 28800 (8)
    DST   : 1
    Time  : Sun Mar  9 10:06:53 2008

GMT :
    TZ    : GMT
    tzname: ('GMT', 'GMT')
    Zone  : 0 (0)
    DST   : 0
    Time  : Sun Mar  9 17:06:53 2008

Europe/Amsterdam :
    TZ    : Europe/Amsterdam
    tzname: ('CET', 'CEST')
    Zone  : -3600 (-1)
    DST   : 1
    Time  : Sun Mar  9 18:06:53 2008

See also

time
Standard library documentation for this module.
The datetime module includes other classes for doing calculations with dates and times.
Work with higher-level date functions to produce calendars or
calculate recurring events.

Times

Times is a small, minimalistic, Python library for dealing with time
conversions to and from timezones, for once and for all.

Accepting time

Never work with _local_ times. Whenever you must accept local time input (e.g.
from a user), convert it to universal time immediately:

`pycon
>>> times.to_universal(local_time, 'Europe/Amsterdam')
datetime.datetime(2012, 2, 1, 10, 31, 45, 781262)
`

The second argument can be a pytz.timezone instance, or a timezone string.

If the local_time variable already holds timezone info, you _must_ leave out
the source timezone from the call.

To enforce best practices, times will never implicitly convert times for you,
even if that would technically be possible.

Date Strings

If you want to accepting datetime representations in string form (for example,
from JSON APIs), you can convert them to universal datetimes easily:

`pycon
>>> import time, times
>>> print times.to_universal('2012-02-03 11:59:03-0500')   # auto-detects source timezone
`

Times utilizes the string parsing routines available in . Note
that the source timezone is auto-detected from the string. If the string
contains a timezone offset, you are not allowed to explicitly specify one.

If the string does not contain any timezone offset, you _must_ specify the
source timezone explicitly:

`pycon
>>> print times.to_universal('2012-02-03 11:59:03', 'Europe/Amsterdam')
`

This is the inverse of times.format().

POSIX timestamps

If you prefer working with UNIX (POSIX) timestamps, you can convert them to
safe datetime representations easily:

`pycon
>>> import time, times
>>> print times.to_universal(time.time())
2012-02-03 11:59:03.588419
`

Note that to_universal auto-detects that you give it a UNIX timestamp.

To get the UNIX timestamp representation of a universal datetime, use:

`pycon
>>> print times.to_unix(universal_time)
`

Current time

When you want to record the current time, you can use this convenience method:

`pycon
>>> import times
>>> print times.now()
datetime.datetime(2012, 2, 1, 11, 51, 27, 621491)
`

Работа с часовыми поясами

Выбор функции для определения текущего времени зависит от того, установлен ли часовой пояс программой или системой. Изменение часового пояса не изменяет фактическое время — только способ его представления.

Чтобы изменить часовой пояс, установите переменную среды TZ, затем вызовите tzset(). Часовой пояс можно указать с различными данными, вплоть до времени начала и завершения периода так называемого «летнего» времени. Проще всего использовать название часового пояса, но базовые библиотеки получают и другую информацию.

Приведенная ниже программа без  time sleep python, и задает несколько разных значений для часового пояса и показывает, как изменения влияют на другие настройки в модуле времени:

time_timezone.py
import time
import os
def show_zone_info():
    print('  TZ    :', os.environ.get('TZ', '(not set)'))
    print('  tzname:', time.tzname)
    print('  Zone  : {} ({})'.format(
        time.timezone, (time.timezone / 3600)))
    print('  DST   :', time.daylight)
    print('  Time  :', time.ctime())
    print()
print('Default :')
show_zone_info()
ZONES = [
    'GMT',
    'Europe/Amsterdam',
]
for zone in ZONES:
    os.environ = zone
    time.tzset()
    print(zone, ':')
    show_zone_info()

Часовой пояс по умолчанию для системы, используемой в примерах — US / Eastern. Другие зоны в примере, который позволяет реализовать  модуль time Python изменяют значение tzname, продолжительности светового дня и значение смещения часового пояса:

$ python3 time_timezone.py
Default :
  TZ    : (not set)
  tzname: ('EST', 'EDT')
  Zone  : 18000 (5.0)
  DST   : 1
  Time  : Sun Aug 14 14:10:42 2016
GMT :
  TZ    : GMT
  tzname: ('GMT', 'GMT')
  Zone  : 0 (0.0)
  DST   : 0
  Time  : Sun Aug 14 18:10:42 2016
Europe/Amsterdam :
  TZ    : Europe/Amsterdam
  tzname: ('CET', 'CEST')
  Zone  : -3600 (-1.0)
  DST   : 1
  Time  : Sun Aug 14 20:10:42 2016

Модуль time

Модуль предоставляет функции, которые сообщают нам время в «секундах с начала эпохи», а также другие утилиты.

Unix Epoch Time

Это формат, в котором вы должны получить временные метки для сохранения в базах данных. Это простое число с плавающей запятой, которое можно преобразовать в целое число. Это также хорошо для арифметики в секундах, так как представляет количество секунд с 1 января 1970 года 00:00:00, и это свет памяти относительно других представлений времени, которые мы будем смотреть дальше:

Эта временная метка не учитывает високосных секунд, поэтому она не линейна — високосные секунды игнорируются. Таким образом, хотя он не эквивалентен международному стандарту UTC, он близок, и, следовательно, довольно хорош для большинства случаев ведения учета.

Однако это не идеально для планирования человека. Если у вас есть будущее событие, которое вы хотите провести в определенный момент времени, вы захотите сохранить это время со строкой, которую можно проанализировать в объекте datetime или сериализованном объекте datetime (они будут описаны позже).

Вы также можете представлять текущее время способом, предпочитаемым вашей операционной системой (что означает, что оно может изменяться при изменении системных настроек, поэтому не полагайтесь на то, что оно будет стандартным для всех систем, как я ожидал, другие) , Это обычно удобно для пользователя, но обычно не приводит к строкам, которые можно сортировать в хронологическом порядке:

Вы также можете гидрировать метки времени в удобочитаемую форму с помощью :

Это преобразование также не подходит для ведения записей (за исключением текста, который будет анализироваться только людьми — и с улучшенным оптическим распознаванием символов и искусственным интеллектом, я думаю, число этих случаев уменьшится).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector