В Python есть модуль time
, который используется для решения задач, связанных со временем. Для использования определенных в нем функций необходимо сначала его импортировать:
import time
Дальше перечислены самые распространенные функции, связанные со временем.
Python time.time()
Функция time()
возвращает число секунд, прошедших с начала эпохи. Для операционных систем Unix 1 января 1970, 00:00:00
(UTC) — начало эпохи (момент, с которого время пошло).
import time
seconds = time.time()
print("Секунды с начала эпохи =", seconds)
Python time.ctime()
Функция time.ctime()
принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает строку, представляющую собой местное время.
import time
# секунды прошли с эпох
seconds = 1575721830.711298
local_time = time.ctime(seconds)
print("Местное время:", local_time)
Если запустить программу, то вывод будет выглядеть так:
Местное время: Sat Dec 7 14:31:36 2019
Python time.sleep()
Функция sleep()
откладывает исполнение текущего потока на данное количество секунд.
import time
print("Сейчас.")
time.sleep(2.4)
print("Через 2.4 секунды.")
Прежде чем переходить к другим функциям, связанных со временем, нужно вкратце разобраться с классом time.struct_time
.
Класс time.struct_time
Некоторые функции в модуле time
, такие как gmtime()
, asctime()
и другие, принимают объект time.struct_time
в качестве аргумента или возвращают его.
Вот пример объекта time.struct_time
.
Индекс | Атрибут | Значения |
---|---|---|
0 | tm_year | 0000, …, 2019, …, 9999 |
1 | tm_mon | 1, 2, …, 12 |
2 | tm_mday | 1, 2, …, 31 |
3 | tm_hour | 0, 1, …, 23 |
4 | tm_min | 0, 1, …, 59 |
5 | tm_sec | 0, 1, …, 61 |
6 | tm_wday | 0, 1, …, 6; Monday is 0 |
7 | tm_yday | 1, 2, …, 366 |
8 | tm_isdst | 0, 1 or -1 |
К значениям (элементам) объекта time.struct_time
доступ можно получить как с помощью индексов, так и через атрибуты.
Python time.localtime()
Функция localtime()
принимает в качестве аргумента количество секунд, прошедших с начала эпохи, и возвращает stuct_time
в локальном времени.
import time
result = time.localtime(1575721830)
print("результат:", result)
print("\nгод:", result.tm_year)
print("tm_hour:", result.tm_hour)
Вывод этой программы будет следующим:
result: time.struct_time(tm_year=2019, tm_mon=12, tm_mday=7, tm_hour=14, tm_min=30, tm_sec=30, tm_wday=5, tm_yday=341, tm_isdst=0)
year: 2019
tm_hour: 14
Если localtime()
передан аргумент None
, то вернется значение из time()
.
Python time.gmtime()
Функция gmtime()
принимает в качестве аргумента количество секунд, прошедших с начала эпохи и возвращает struct_time
в UTC.
import time
result = time.gmtime(1575721830)
print("результат:", result)
print("\nгод:", result.tm_year)
print("tm_hour:", result.tm_hour)
Вывод этой программы будет следующим:
result: time.struct_time(tm_year=2019, tm_mon=12, tm_mday=7, tm_hour=12, tm_min=30, tm_sec=30, tm_wday=5, tm_yday=341, tm_isdst=0)
year: 2019
tm_hour: 12
Если gmtime()
передан аргумент None
, то вернется значение time()
.
Python time.mktime()
Функция mktime()
принимает struct_time
(или кортеж, содержащий 9 значений, относящихся к struct_time
) в качестве аргумента и возвращает количество секунд, прошедших с начала эпохи, в местном времени. Это функция, обратная localtime()
.
import time
t = (2019, 12, 7, 14, 30, 30, 5, 341, 0)
local_time = time.mktime(t)
print("Местное время:", local_time)
Следующий пример показывает, как связаны mktime()
и localtime()
.
import time
seconds = 1575721830
# возвращает struct_time
t = time.localtime(seconds)
print("t1: ", t)
# возвращает секунды из struct_time
s = time.mktime(t)
print("\ns:", seconds)
Вывод будет следующий:
t1: time.struct_time(tm_year=2019, tm_mon=12, tm_mday=7, tm_hour=14, tm_min=30, tm_sec=30, tm_wday=5, tm_yday=341, tm_isdst=0)
s: 1575721830
Python time.asctime()
Функция asctime()
принимает struct_time
(или кортеж, содержащий 9 значений, относящихся к struct_time
) в качестве аргумента и возвращает строку, представляющую собой дату.
Например:
import time
t = (2019, 12, 7, 14, 30, 30, 5, 341, 0)
result = time.asctime(t)
print("Результат:", result)
Вывод:
Результат: Sat Dec 7 14:30:30 2019
Python time.strftime()
Функция strftime
принимает stuct_time
(или соответствующий кортеж) в качестве аргумента и возвращает строку с датой в зависимости от использованного формата. Например:
import time
named_tuple = time.localtime() # получить struct_time
time_string = time.strftime("%m/%d/%Y, %H:%M:%S", named_tuple)
print(time_string)
Вывод будет следующий:
12/07/2019, 15:01:09
Здесь %Y
, %m
, %d
, %H
и другие — элементы форматирования.
%Y
— год [0001,…, 2019, 2020,…, 9999]%m
— месяц [01, 02, …, 11, 12]%d
— день [01, 02, …, 30, 31]%H
— час [00, 01, …, 22, 23%M
— минута [00, 01, …, 58, 59]%S
— секунда [00, 01, …, 58, 61]
Python time.strptime()
Функция strptime()
делает разбор строки python, в которой упоминается время и возвращает struct_time
.
import time
time_string = "15 June, 2019"
result = time.strptime(time_string, "%d %B, %Y")
print(result)
Вывод:
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=166, tm_isdst=-1)