Работа со временем в Python
При создании программ, периодически приходится работать с датой и временем. В Python работа с датой и временем начинается с импорта модуля time и использования функций из данного модуля.
Базовым термином при работе со временем в Python является термин tick - тик. Данный термин означает количество секунд прошедших с 12:00 1 января 1970. Эта дата по другому называется - эпоха. Временные интервалы представлены количеством секунд (число с плавающей точкой), прошедших с начала данной эпохи.
Модуль Python time позволяет манипулировать датой и временем. Функция time.time() возвращает текущее время системы в тиках начиная с эпохи.
Пример:
# импорт модуля
import time
sec = time.time()
print( 'Количество секунд прошедших с 12:00 1 Января 1970 составляет ' + sec )
С данным представлением времени в тиках очень легко и удобно производить различные арифметические операции. Но, учтите что диапазон дат, которыми можно манипулировать с помощью данного модуля ограничен снизу 1970, и сверху 2038 годами. Т.е. даты раньше и позже представлены быть не могут с помощью данного модуля.
Следующей базовой компонентой работы с датой и временем в Python является так называемый "кортеж времени - TimeTuple". О кортежах я уже рассказывал, кратко напомню, что это просто нередактируемые списки.
Итак, TimeTuple - это на самом деле класс time.struct_time, который расширяет встроенный в Python класс tuple. Если вы уже знакомы с PHP или Java, то такие термины как класс и наследование должны быть вам знакомы. И так как Python мультипарадигменный язык в нем присутствуют классы и ООП, но об этом уже в другой статье. Состав объекта TimeTuple:
Индекс Поле класса Атрибут Пример значения
0 год - 4 цифры tm_year 2019
1 Число месяца tm_mon [1,12]
2 День tm_mday [1,31]
3 Час tm_hour [0,23]
4 Минута tm_min [0,59]
5 Секунды tm_sec [0,61] (60 или 61 - это секунда координации)
6 День недели tm_wday [0,6] (0 - понедельник, но это поведение можно переопределить)
7 День года tm_yday [1,366]
8 Летнее время tm_isdst -1, 0, 1
Здесь Атрибут - это поле объекта, к которому можно обращаться через оператор точка [.]. Далее я покажу пример.
Как получить текущее время в Python?
Цифровое представление удобно для компьютера, но не для человека, поэтому, чтобы преобразовать секунды в объект struct_time, с которым уже понятнее работать, нам необходимо выполнить следующее:
from time import localtime, time
loc = localtime( time() )
print ('Ваше текущее время ' + loc)
# Результат
# time.struct_time(tm_year=2019, tm_mon=11, tm_mday=9, tm_hour=13, tm_min=37, tm_sec=1, tm_wday=5, tm_yday=313, tm_isdst=0)
# пример того, как можно обращаться к полю объекта
print ( 'До конца года осталось: ' + 366 - loc.tm_yday )
Как отформатировать время?
В модуле time много разных функции, одна из таких функции time.strftime предназначена для форматирования даты в соответствии с определенным шаблоном. По своему функционалу она похожа на такую же функцию из PHP, разве что формат строки будет несколько отличен.
Итак давайте выведем дату и время в более привычном для нас формате. Как это сделать будет показано в примере далее:
import time
ft = time.strftime('%d/%m/%Y %H:%M:%S')
print( ft )
# '09/11/2019 17:31:11'
%d, %m, %Y и др. - это спецификаторы, представляющие какой-то отдельный компонент времени. Таких спецификаторов более 30.
Таким образом, Python позволяет очень просто работать с датой и временем, а также форматировать время, представленное количеством секунд в любой удобный формат.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.