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

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

время импорта

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

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

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

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

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

время импорта

секунды = время.время()

print("Секунды с эпохи =", секунды)

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

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

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

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

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

время импорта

печать(время.ctime())

Вт 23 окт 10:18:23 2018

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

время класса.struct_time

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

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

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

Возврат определенного формата

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

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

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

время импорта

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

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

печать (строка_времени)

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

  1. %Y — год.
  2. %m — месяц.
  3. %d – день.
  4. %H – время.
  5. %M – минуты.
  6. %S – второй.

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

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

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

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

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

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

время импорта

пауза = 10

print(«Программа запущена…»)

время.сон(пауза)

print(str(pause) + »прошло секунд.»)

В результате мы получим следующее:

Программа началась…

Прошло 10 секунд.

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

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

Узнай местное время

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

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

время импорта

результат = time.localtime(1575721830)

печать("результат:", результат)

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

print(«tm_hour:», result.tm_hour)

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

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

время импорта

результат = time.gmtime(1575721830)

печать("результат:", результат)

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

print(«tm_hour:», result.tm_hour)

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

Возвращает количество секунд с начала эпохи с автоматическим преобразованием в местное время.

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

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

время импорта

секунд = 1575721830

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

t = time.localtime(секунды)

print(«t1: «, т)

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

с = время.mktime(т)

print(«ns:», секунды)

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

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

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

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

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

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

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

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

Он принимает переменную, в которой указано это значение, и возвращает уже знакомое нам struct_time.

Для наглядности напишем такую ​​программу.

время импорта

time_string = «15 июня 2019 г.»

result = time.strptime(time_string, «%d %B, %Y»)

печать (результат)

Угадайте, какой будет результат? Попробуйте угадать, не глядя на итоговую сумму. А затем проверьте ответ.

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 совсем несложно. Достаточно следовать этим инструкциям, и все получится. Использование библиотеки время пользователь получает огромное количество возможностей для работы со временем, таких как:

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

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

Оставьте комментарий