Модуль time в Python 3. Главные методы, шаблоны, примеры

Почти любая программа использует время. В Python для этого разработана отдельная библиотека – time, применяемая с целью выполнения самых различных действий с ним. Чтобы сделать его работу возможной, его надо сперва объявить в начале кода. Для этого используется такая строчка:

import time

Рассмотрим разные варианты, как правильно использовать этот модуль на практике. 

Определение количества секунд со старта эпохи

Чтобы реализовать эту задачу, существует функция time(), которая не принимает ни одного параметра. Возвращаемое ею значение – сколько секунд прошло с 1 января 1970 года. В Python это время называется началом эпохи. По крайней мере, в операционных системах семейства Unix.

Что касается Windows, то дата такая же самая, но могут быть проблемы с отрицательными значениями, которые были до этого числа. 

Используемый часовой пояс – UTC.

import time

seconds = time.time()

print(«Секунды с начала эпохи =», seconds)

Сложность этой функции в том, что она не отображает именно дату, а лишь количество секунд. Чтобы преобразовать в привычный всем формат, нужно использовать точные сведения. Для этого используется функция time.ctime().

Возвращение даты, времени в привычном формате

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

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

Вот фрагмент кода, который это демонстрирует.

import time

print(time.ctime())

Tue Oct 23 10:18:23 2018

Последняя строчка – это то, что выводится в консоль, где запущен интерпретатор Python. Метод автоматически форматирует полученное количество секунд в привычный для пользователя вид. Правда, редко используются все элементы, описанные выше. Как правило, нужно получить или только времени, или исключительно сегодняшнее число. Для этого используется отдельная функция – strftime(). Но перед тем, как мы ее рассмотрим, необходимо разобрать класс time.struct_time.

Класс time.struct_time

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

Он состоит из следующих атрибутов.Модуль time в Python 3. Главные методы, шаблоны, примеры

Внимание! В отличие от ряда других языков программирования, здесь месяц может колебаться в диапазоне от 1 до 12, а не от нуля до 11.

Возвращение конкретного формата

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

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

Вот фрагмент кода, где мы это делаем.

import time

named_tuple = time.localtime() # получить struct_time

time_string = time.strftime(«%m/%d/%Y, %H:%M:%S», named_tuple)

print(time_string)

Если запустить этот код, будет выведена текущая дата и время. Формат и последовательность элементов можно изменять. Они бывают следующими:

  1. %Y – год.
  2. %m – месяц.
  3. %d – день.
  4. %H – час.
  5. %M – минута.
  6. %S – секунда.

Соответственно, можно сделать так, чтобы вывод был исключительно месяца и дня. Для этого просто не надо давать команду выводить год. То есть, записать в приведенной выше формуле в качестве аргумента %m/%d, и все. Или же наоборот, %d/%m. 

На самом деле, количество строковых литералов значительно больше. Приведем таблицу, где они детально описаны.Модуль time в Python 3. Главные методы, шаблоны, примеры

Отложить поток на определенное количество секунд

Для этого используется функция sleep(). С течением времени связан довольно большой блок программерских задач. Иногда приходится откладывать следующий шаг на определенное время. Например, если требуется взаимодействовать с базой данных, обработка которых занимает определенное время.

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

Например, в этом фрагменте задержка составляет 10 сек.

import time

pause = 10

print(«Program started…»)

time.sleep(pause)

print(str(pause) + » seconds passed.»)

В результате мы получим такое:

Program started…

10 seconds passed.

Как мы видим по выводу, сначала программа отчитывается о том, что она стартовала. А по прошествии десяти секунд написала, что это время прошло.

Функция позволяет указать длительность паузы в миллисекундах. Для этого используем дробные значения аргумента функции sleep. Например, 0,1. Это означает, что задержка составит 100 миллисекунд.

Получить локальное время

С помощью функции localtime() программа получает число секунд со старта эпохи в определенном часовом поясе. 

Приведем пример кода для наглядности.

import time

result = time.localtime(1575721830)

print(«результат:», result)

print(«\nгод:», result.tm_year)

print(«tm_hour:», result.tm_hour)

Возврат struct_time в UTC на основе количества секунд со старта эпохи

Эта задача достигается с помощью метода time.gmtime().. Нагляднее будет, если привести пример.

import time

result = time.gmtime(1575721830)

print(«результат:», result)

print(«\nгод:», result.tm_year)

print(«tm_hour:», result.tm_hour)

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

Возврат количества секунд со старта эпохи с автоматической конвертацией в локальное время

Если стоит перед вами такая задача, она реализуется с помощью метода mktime(), который принимает struct_time. После этого она выполняет обратное действие функции localtime(). То есть, превращает время по локальному часовому поясу в число секунд, которые прошли со старта эпохи с поправкой на часовой пояс.

Функции mktime() и localtime() тесно переплетены между собой. Этот фрагмент кода наглядно демонстрирует это. Давайте рассмотрим его, чтобы более глубоко понимать, как это работает. 

import time

seconds = 1575721830

# возвращает struct_time

t = time.localtime(seconds)

print(«t1: «, t)

# возвращает секунды из struct_time

s = time.mktime(t)

print(«\ns:», seconds)

Видим, что переменной seconds было присвоено 1575721830 секунд с начала эпохи. Сначала программа получает точную дату, время и другие параметры, основываясь на этом значении, поместила его в переменную t, после чего конвертирует ее содержимое в переменную s.

После этого отбивает новую строку и выводит количество секунд в консоль. Можете проверить: это будет то же самое число, что было присвоено переменной seconds.

Вывод даты из 9 чисел, которые относятся к struct_time

Предположим, у нас есть 9 чисел, которые обозначают год, месяц, число, день недели и ряд других значений, и нам необходимо их объединить в одну строку. Для этого используется функция asctime(). Она принимает или готовый struct_time, или любой другой кортеж из 9 значений, который обозначает то же самое. После этого возвращается строка, которая являет собой дату, время и ряд других параметров. 

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

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

Получение времени и даты на основе строки Python

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

Она принимает переменную, в которой указано это значение, а возвращает уже знакомый нам 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)

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

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

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

ОфисГуру
Adblock
detector