9.1 Работа с датой и временем
Программистам очень часто приходится в своих программах работать с датами и временем. Поэтому нет ничего удивительного в том, что в Python на эти случаи есть две стандартные библиотеки datetime и time.
Библиотека datetime является частью стандартной библиотеки Python и предоставляет классы для работы с датами и временем. Она позволяет создавать, манипулировать и форматировать даты и время, а также выполнять арифметические операции с ними.
Основные классы библиотеки datetime
Класс datetime.date
Этот класс представляет дату (год, месяц, день) без времени. Он полезен для работы с календарными датами.
Пример использования:
import datetime
# Создание объекта даты
d = datetime.date(2023, 5, 24)
print(d) # Вывод: 2023-05-24
# Получение текущей даты
today = datetime.date.today()
print(today)
# Доступ к атрибутам года, месяца и дня
print(d.year) # Вывод: 2023
print(d.month) # Вывод: 5
print(d.day) # Вывод: 24
Класс datetime.time
Этот класс представляет время (часы, минуты, секунды, микросекунды) без даты. Он полезен для работы с временем суток.
Пример использования:
import datetime
# Создание объекта времени
t = datetime.time(14, 30, 45)
print(t) # Вывод: 14:30:45
# Доступ к атрибутам часов, минут и секунд
print(t.hour) # Вывод: 14
print(t.minute) # Вывод: 30
print(t.second) # Вывод: 45
Класс datetime.datetime
Этот класс объединяет дату и время (год, месяц, день, часы, минуты, секунды, микросекунды). Он полезен для работы с конкретными моментами времени.
Пример использования:
import datetime
# Создание объекта даты и времени
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt) # Вывод: 2023-05-24 14:30:45
# Получение текущей даты и времени
now = datetime.datetime.now()
print(now)
# Доступ к атрибутам даты и времени
print(dt.year) # Вывод: 2023
print(dt.month) # Вывод: 5
print(dt.day) # Вывод: 24
print(dt.hour) # Вывод: 14
print(dt.minute) # Вывод: 30
print(dt.second) # Вывод: 45
Класс datetime.timedelta
Этот класс представляет разницу между двумя моментами времени, выраженную в днях, секундах и микросекундах. Он полезен для выполнения арифметических операций с датами и временем.
Пример использования:
import datetime
# Создание объекта timedelta
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta) # Вывод: 10 days, 5:30:00
# Добавление timedelta к дате
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt) # Вывод: 2023-06-03 20:00:00
# Вычитание timedelta из даты
earlier_dt = dt - delta
print(earlier_dt) # Вывод: 2023-05-14 09:00:00
9.2 Форматирование и парсинг дат и времени
Нам часто нужно не просто работать с датой, а преобразовывать её в строку определённого вида. Обратный процесс, когда мы преобразуем строку в объект, обычно называется парсингом. Для этих операций в Python тоже есть свои классы и методы:
Метод strftime()
Метод strftime() используется для форматирования объектов datetime в строку по заданному формату.
Пример использования:
import datetime
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
# Форматирование даты и времени
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt) # Вывод: 2023-05-24 14:30:45
# Форматирование только даты
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date) # Вывод: 24-05-2023
# Форматирование только времени
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time) # Вывод: 14:30:45
Метод strptime()
Метод strptime() используется для парсинга строк в объекты datetime по заданному формату.
Пример использования:
import datetime
# Парсинг строки в объект datetime
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt) # Вывод: 2023-05-24 14:30:45
# Парсинг строки в объект date
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d) # Вывод: 2023-05-24
# Парсинг строки в объект time
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t) # Вывод: 14:30:45
9.3 Работа с часовыми поясами
Как показывает практика, нашими сервисами пользуются люди со всего мира, и, к сожалению, они живут в разных странах и у них разные часовые пояса (timezone). Поэтому вам как программисту нужно уметь работать с ними тоже.
Ну и конечно в Python есть класс и на этот случай:
Класс timezone
Класс timezone из модуля datetime позволяет работать с часовыми поясами.
import datetime
# Создание объекта datetime с часовым поясом UTC
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt) # Вывод: 2023-05-24 14:30:45+00:00
# Конвертация в другой часовой пояс
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt) # Вывод: 2023-05-24 23:30:45+09:00
Мы разобрали библиотеку datetime очень обзорно, я бы даже сказал поверхностно. В будущем мы ещё раз вернёмся к ней и будем учиться использовать её для более конкретных задач. Сейчас же я хотел просто вас с ней познакомить и расширить, так сказать, ваш взгляд на набор стандартных библиотек.
Про любую библиотеку вы должны в первую очередь знать, что она есть, и представлять, что можно сделать с её помощью. А список функций, их параметров и все их возможности всегда можно почерпнуть из официальной документации.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ