Продолжая цикл статей по управлению датой и временем, сегодня мы с вами рассмотрим модуль time. На примерах подробно разберем различные функции, определенные в модуле time.
Для того что бы использовать данный модуль, в первую очередь его необходимо импортировать, с этим у вас не должно возникнуть проблем.
import time
А теперь давайте на примерах разберем функции определенные в данном модуле.
Python time.time()
Функция time(), возвращает нам количество секунд прошедших с начала эпохи. Обычно такой датой является 1 январь 1970 года.
import time
seconds = time.time()
print("Seconds since epoch =", seconds)
time.ctime
Функция time.ctime, принимает секунды в качестве аргумента и возвращает строку, представляющее местное время.
import time
# seconds passed since epoch
seconds = 1545925769.9618232
local_time = time.ctime(seconds)
print("Local time:", local_time)
Результат:
Local time: Thu Dec 27 15:49:29 2018
time.sleep
Одним из наиболее часто используемых функций данного модуля является функция sleep(). Данный метод позволяет заснуть программе на определенное время. При написании различных парсеров, для ограничения запросов, или для придания вашим запросам более человеческий вид, данная функция играет важную роль.
import time
print("This is printed immediately.")
time.sleep(2.0)
print("This is printed after 2.0 seconds.")
Прежде чем мы перейдем к остальным функциям модуля, рассмотрим класс time.struct.time вкратце.
time.struct_time
Пример объекта time.struct_time.
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=6, tm_min=35, tm_sec=17, tm_wday=3, tm_yday=361, tm_isdst=0)
Указатель | Атрибут | Запросы |
0 | tm_year | 0000, ...., 2018, ..., 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; Понедельник-0 |
7 | tm_yday | 1, 2, ..., 366 |
Все значения объекта доступны как по индексам, так и по атрибутам.
time.localtime
Функция localtime(), в качестве аргумента принимает количество секунд с момента эпохи, и возвращает местное время.
import time
result = time.localtime(1545925769)
print("result:", result)
print("\nyear:", result.tm_year)
print("tm_hour:", result.tm_hour)
Результат:
result: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0)
year: 2018
tm_hour: 15
time.gmtime()
Функция gmtime(), так же принимает в качестве аргумента количество секунд прошедших с момента эпохи, и возвращает объект struct_time в формате UTC.
import time
result = time.gmtime(1545925769)
print("result:", result)
print("\nyear:", result.tm_year)
print("tm_hour:", result.tm_hour)
Результат:
result = time.struct_time(tm_year=2018, tm_mon=12, tm_mday=28, tm_hour=8, tm_min=44, tm_sec=4, tm_wday=4, tm_yday=362, tm_isdst=0)
year = 2018
tm_hour = 8
time.mktime
Функция mktime() принимает объект struct_time, по сути данный метод работает обратно относительно функции localtime().
import time
t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
local_time = time.mktime(t)
print("Local time:", local_time)
Для того, что бы было более понятно о чем идет речь, ниже рассмотрим и localtime() и mktime().
import time
seconds = 1545925769
# returns struct_time
t = time.localtime(seconds)
print("t1: ", t)
# returns seconds from struct_time
s = time.mktime(t)
print("\s:", seconds)
Результат:
t1: time.struct_time(tm_year=2018, tm_mon=12, tm_mday=27, tm_hour=15, tm_min=49, tm_sec=29, tm_wday=3, tm_yday=361, tm_isdst=0)
s: 1545925769.0
time.asctime
Функция asctime(), так принимает struct_time, в качестве аргумента, и возвращает строкую. Ниже приведен пример его работы.
import time
t = (2018, 12, 28, 8, 44, 4, 4, 362, 0)
result = time.asctime(t)
print("Result:", result)
Результат:
Result: Fri Dec 28 08:44:04 2018
time.strftime
Функция strftime() принимает struct_time, в качестве аргумента вернет нам строку, на основе используемого кода формата. В недавней статье мы с вами уже проходили strftime().
import time
named_tuple = time.localtime() # get struct_time
time_string = time.strftime("%m/%d/%Y, %H:%M:%S", named_tuple)
print(time_string)
Результат:
12/28/2018, 09:47:41
Более подробно о кодах формата в strftime()
time.strptime
Как и в случае с strftime(), мы с вами уже разбирали работу strptime(). Данная функция анализирует строку, которая представляет время, и возращает результат в struct_time.
import time
time_string = "21 June, 2018"
result = time.strptime(time_string, "%d %B, %Y")
print(result)
Результат:
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=21, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=172, tm_isdst=-1)
Более подробно о работе strptime()