Работа с датой и временем — одна из частых задач при разработке приложений. В Python для этого есть библиотеки: datetime, pytz и dateutil.
В этой шпаргалке собраны основные примеры и функции.
Подписывайтесь на мой канал в Телеграмм, чтобы ничего не пропустить.
1. Модуль datetime
Импортирование
from datetime import datetime, date, time, timedelta
Получение текущего времени
now = datetime.now() # Локальное время
utc_now = datetime.utcnow() # UTC-время
Создание объектов даты и времени
# Создание даты и времени
dt = datetime(2023, 10, 31, 12, 30, 45) # 31 октября 2023, 12:30:45
# Только дата
d = date(2023, 10, 31) # 31 октября 2023
# Только время
t = time(12, 30, 45) # 12:30:45
Форматирование дат и времени
# Преобразование datetime → строку
formatted = now.strftime('%Y-%m-%d %H:%M:%S') # '2023-10-31 12:30:45'
# Преобразование строки → datetime
parsed = datetime.strptime('2023-10-31 12:30:45', '%Y-%m-%d %H:%M:%S')
Работа с timedelta
delta = timedelta(days=2, hours=3, minutes=30)
# Операции с датами
future_date = now + delta # Добавить 2 дня, 3 часа и 30 минут
past_date = now - delta # Вычесть интервал
# Разница между датами
diff = future_date - now
print(diff.days, diff.seconds) # Дни и секунды разницы
2. Модуль pytz (Работа с временными зонами)
Установка
pip install pytz
Импортирование
import pytz
Вывод всех временных зон
for tz in pytz.all_timezones:
print(tz)
Работа с временными зонами
# Пример: Создание объекта timezone
tz_moscow = pytz.timezone('Europe/Moscow')
# Локализовать datetime в определенной временной зоне
localized = tz_moscow.localize(datetime(2023, 10, 31, 12, 30, 45))
# Преобразование из одной временной зоны в другую
tz_utc = pytz.utc
converted = localized.astimezone(tz_utc)
print(localized) # 2023-10-31 12:30:45+03:00
print(converted) # 2023-10-31 09:30:45+00:00
Получение текущего времени с временной зоной
now = datetime.now(pytz.utc) # Текущее UTC-время
moscow_time = now.astimezone(pytz.timezone('Europe/Moscow'))
3. Модуль dateutil (Удобный парсинг и работа с датами)
Установка
pip install python-dateutil
Импортирование
from dateutil import parser
from dateutil.relativedelta import relativedelta
Парсинг строк в дату
# Автоматическое определение формата даты
dt = parser.parse('31 Oct 2023 12:30:45')
print(dt) # 2023-10-31 12:30:45
Работа с relativedelta
relativedelta позволяет добавлять/вычитать сложные интервалы, например годы, месяцы и дни.
# Добавление интервалов
future_date = now + relativedelta(years=1, months=2, days=10)
# Вычитание интервалов
past_date = now - relativedelta(weeks=3)
print(future_date) # Через 1 год, 2 месяца и 10 дней
print(past_date) # 3 недели назад
4. Полезные форматы для strftime и strptime
5. Быстрые советы
- Используйте pytz для работы с часовыми поясами.
- Для автоматического парсинга строк с датами используйте dateutil.parser.
- Сложные временные интервалы (например, "1 год 2 месяца") удобнее обрабатывать через relativedelta.
Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам