Найти в Дзене

Шпаргалка по работе с датой и временем в Python: datetime, pytz, dateutil

Оглавление

Работа с датой и временем — одна из частых задач при разработке приложений. В 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

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

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

4. Полезные форматы для strftime и strptime

-5

5. Быстрые советы

  • Используйте pytz для работы с часовыми поясами.
  • Для автоматического парсинга строк с датами используйте dateutil.parser.
  • Сложные временные интервалы (например, "1 год 2 месяца") удобнее обрабатывать через relativedelta.

Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?

Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам

-6