Модуль time в Python

В 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.

ИндексАтрибутЗначения
0tm_year0000, …, 2019, …, 9999
1tm_mon1, 2, …, 12
2tm_mday1, 2, …, 31
3tm_hour0, 1, …, 23
4tm_min0, 1, …, 59
5tm_sec0, 1, …, 61
6tm_wday0, 1, …, 6; Monday is 0
7tm_yday1, 2, …, 366
8tm_isdst0, 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)