Time Python

Основы

Введение в тему

Программисты часто сталкиваются с задачами по обработке времени. Эти задачи не являются тривиальными, поскольку существует множество способов представления этих данных. Они зависят от региона и личных предпочтений человека, записывающего их. В этом уроке мы рассмотрим модуль стандартной библиотеки time Python, который предназначен для упрощения таких работ.

Для начала работы с этим модулем его необходимо добавить в Ваш код:

Python time time

ОС Unix была создана в 1970 году, а значит файл этой системы не мог быть создан ранее 1970-01-01. Поэтому для данной системы была принята точка отсчёта времени — 1 января 1970, 00:00:00 (UTC). Её назвали началом эпохи и время стали считать, как количество секунд (миллисекунд), прошедших с этого момента. Такой подход, де-факто, стал широко распространённым стандартом из-за однозначности определения времени. Функция time.time() даёт возможность узнать сколько на данный момент прошло секунд от начала эпохи.

import time

секунд_с_начала_эпохи = time.time()
print("С 1 января 1970, 00:00:00 прошло", секунд_с_начала_эпохи, "секунд.")

#Вывод:

С 1 января 1970, 00:00:00 прошло 1625195121.0941737 секунд.

Python time ctime

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

import time

секунд_с_начала_эпохи = time.time()
print("С 1 января 1970, 00:00:00 прошло", секунд_с_начала_эпохи, "секунд.")
местное_время = time.ctime(секунд_с_начала_эпохи)
print("Это", местное_время, "по местному времени.")
#Вывод:

С 1 января 1970, 00:00:00 прошло 1625203810.2798948 секунд.

Это Fri Jul  2 08:30:10 2021 по местному времени.

Python time sleep

time.sleep() предназначена для остановки выполнения программы. Это функция используется чаще других, поскольку область её применения выходит за рамки обычной обработки времени.

В качестве параметра необходимо передать время задержки в секундах. Проверим её работу:

import time

время_запуска = time.time()
time.sleep(5.16)
время_завершения = time.time()
print("Время запуска", время_запуска)
print("Время завершения", время_завершения)
print("Прошло времени", время_завершения-время_запуска)
#Вывод:

Время запуска 1625204320.242042

Время завершения 1625204325.4020572

Прошло времени 5.160015106201172

Класс time struct_time

Класс struct_time модуля time представляет собой тип набора значений времени, возвращаемых функциями time.gmtime(), time.localtime() и time.strptime(). Значения могут быть доступны по индексу и по имени атрибута. Данная коллекция является именованным кортежем.

Присутствуют следующие значения:

Класс struct_time состоит из следующих атрибутов:

tm_year: возвращает год по местному времени.

tm_hour: возвращает час конкретного местного времени.

tm_min: возвращает значение минут определенного местного времени.

tm_sec: возвращает значение секунд определенного местного времени.

tm_mon: возвращает месяц по местному времени.

tm_mday: возвращает дату месяца по местному времени.

tm_wday: возвращает значение дней недели, т.е. с 0 понедельника по 6 воскресенье.

tm_yday: возвращает номер конкретного дня в диапазоне от 1 до 366.

Вот как этот объект выглядит:

import time

текущее_время = time.localtime()
print(текущее_время)
#Вывод:

time.struct_time(tm_year=2021, tm_mon=7, tm_mday=2, tm_hour=8, tm_min=49, tm_sec=4, tm_wday=4, tm_yday=183, tm_isdst=0)

Python time localtime

time.localtime() возвращает значение по местному времени имеющее тип struct_time. Имеет необязательный параметр, указывающий на смещение c начала эпохи.

import time

локалтайм_со_смещением_15_секунд = time.localtime(15)
print("Вся структура:", локалтайм_со_смещением_15_секунд)
print("Смещение в секундах:", локалтайм_со_смещением_15_секунд.tm_sec - time.localtime(0).tm_sec)
#Вывод:

Вся структура: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=3, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=0)

Смещение в секундах: 15

Если в localtime() не предать параметр смещения, то функция вернёт текущее время.

Python time gmtime

gmtime() делает почти то же самое, но значение возвращает UTC.

import time

гмтайм_со_смещением_15_секунд = time.gmtime(15)
print("Вся структура:", гмтайм_со_смещением_15_секунд)
print("Смещение в секундах:", гмтайм_со_смещением_15_секунд.tm_sec - time.gmtime(0).tm_sec)
текущий_гмтайм = time.gmtime()
print("Текущее время по международному времени:", текущий_гмтайм)
#Вывод:

Вся структура: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=0)

Смещение в секундах: 15

Текущее время по международному времени: time.struct_time(tm_year=2021, tm_mon=7, tm_mday=2, tm_hour=6, tm_min=3, tm_sec=22, tm_wday=4, tm_yday=183, tm_isdst=0)

Если в time.gmtime () не предать параметр смещения, то функция вернёт значение текущего времени по Гринвичу.

Python time mktime

time.mktime() преобразует структуру времени в секунды формата ОС Unix. Возвращает количество секунд и милисекунд. Является реверсивной по отношению к функции localtime().

import time

локалтайм_со_смещением_15_секунд = time.localtime(15)
мктайм_со_смещением_15_секунд = time.mktime(локалтайм_со_смещением_15_секунд)
print("Результат функции time.localtime(15):", локалтайм_со_смещением_15_секунд)
print("Результат функции time.mktime(локалтайм_со_смещением_15_секунд):", мктайм_со_смещением_15_секунд)
#Вывод:

Результат функции time.localtime(15): time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=3, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=0)

Результат функции time.mktime(локалтайм_со_смещением_15_секунд): 15.0

Python time asctime

asctime() преобразует tuple или значение типа struct_time, в 24-символьную строку следующей формы – «Thu Jan  1 03:00:00 1970».

Например:

import time

локалтайм_со_смещением_15_секунд = time.localtime(15)
асктайм_со_смещением_15_секунд = time.asctime(локалтайм_со_смещением_15_секунд)
print("Результат функции time.localtime(15):", локалтайм_со_смещением_15_секунд)
print("Результат функции time.asctime(локалтайм_со_смещением_15_секунд):", асктайм_со_смещением_15_секунд)
#Вывод:

Результат функции time.localtime(15): time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=3, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=0)

Результат функции time.asctime(локалтайм_со_смещением_15_секунд): Thu Jan  1 03:00:15 1970

Python time strftime

time.strftime() конвертирует кортеж или объект struct_time, который возвращают time.gmtime() или time.localtime() в значение, имеющее тип стринг и вид, зависящий от переданного аргумента формата.
Когда время не передаётся в аргументы функции, она использует текущее время, которое возвращает localtime() . Формат должен иметь строковый тип.

import time

локалтайм_со_смещением_15_секунд = time.localtime(15)
стрфтайм_со_смещением_15_секунд = time.strftime("%m/%d/%Y, %H:%M:%S", локалтайм_со_смещением_15_секунд)
print("Результат функции time.localtime(15):", локалтайм_со_смещением_15_секунд)
print("Результат функции time.strftime(локалтайм_со_смещением_15_секунд):", стрфтайм_со_смещением_15_секунд)
#Вывод:

Результат функции time.localtime(15): time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=3, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=0)

Результат функции time.strftime(локалтайм_со_смещением_15_секунд): 01/01/1970, 03:00:15

Здесь %Y, %m, %d, %H и прочие — это элементы, которыми задаётся форматирование.

%Y — год [0001,…, 2019, 2020,…, 9999]

%m — месяц [01, 02, …, 11, 12]

%d — день месяца в виде десятичного числа [01,31]. %H — час [00, 01, …, 22, 23

%M — минута в виде десятичного числа [00,59]

%S — секунда [00, 01, …, 58, 61]

%a — сокращенное название дня недели

Python time strptime

time.strptime() – обратная по отношению к функции time.strftime(). Она разбирает строку, содержащую время и возвращает struct_time.

import time

локалтайм_со_смещением_15_секунд = time.localtime(15)
стрфтайм_со_смещением_15_секунд = time.strftime("%m/%d/%Y, %H:%M:%S", локалтайм_со_смещением_15_секунд)
стрптайм_со_смещением_15_секунд = time.strptime(стрфтайм_со_смещением_15_секунд, "%m/%d/%Y, %H:%M:%S")
print("Результат функции time.localtime(15):", локалтайм_со_смещением_15_секунд, sep='\n')
print("Результат функции time.strftime(локалтайм_со_смещением_15_секунд):", стрфтайм_со_смещением_15_секунд, sep='\n')
print("Результат функции time.strptime(стрфтайм_со_смещением_15_секунд, '%m/%d/%Y, %H:%M:%S'):", стрптайм_со_смещением_15_секунд, sep='\n')
#Вывод:

Результат функции time.localtime(15):

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=3, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=0)

Результат функции time.strftime(локалтайм_со_смещением_15_секунд):

01/01/1970, 03:00:15

Результат функции time.strptime(стрфтайм_со_смещением_15_секунд, '%m/%d/%Y, %H:%M:%S'):

time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=3, tm_min=0, tm_sec=15, tm_wday=3, tm_yday=1, tm_isdst=-1)

Оцените статью
О Python на русском языке
Добавить комментарий

Adblock
detector