datetime — стандартный модуль Python для работы с датами и временем. Входит в стандартную библиотеку, устанавливать не нужно.
Импорт
from datetime import datetime, date, timedelta
Текущая дата и время
from datetime import datetime
now = datetime.now()
print(now) # 2025-05-07 14:32:15.123456
print(now.year) # 2025
print(now.month) # 5
print(now.day) # 7
print(now.hour) # 14
Форматирование — strftime()
strftime() превращает объект datetime в строку по шаблону:
from datetime import datetime
now = datetime.now()
print(now.strftime('%d.%m.%Y')) # 07.05.2025
print(now.strftime('%d.%m')) # 07.05
print(now.strftime('%H:%M')) # 14:32
print(now.strftime('%d.%m.%Y %H:%M')) # 07.05.2025 14:32
Коды формата:
| Код | Значение | Пример |
|---|---|---|
%d |
День | 07 |
%m |
Месяц | 05 |
%Y |
Год (4 цифры) | 2025 |
%H |
Час (24ч) | 14 |
%M |
Минуты | 32 |
Парсинг строки — strptime()
Обратная операция: строка → datetime:
from datetime import datetime
dt = datetime.strptime('2025-05-07', '%Y-%m-%d')
print(dt.year) # 2025
print(dt.month) # 5
Unix timestamp — fromtimestamp()
Unix timestamp — количество секунд с 1 января 1970 года. Многие API возвращают время именно в этом формате (поле dt в OpenWeatherMap, например).
from datetime import datetime
timestamp = 1735689600 # число из API
dt = datetime.fromtimestamp(timestamp)
print(dt) # 2025-01-01 00:00:00
print(dt.strftime('%d.%m.%Y')) # 01.01.2025
print(dt.strftime('%d.%m')) # 01.01
fromtimestamp() автоматически учитывает часовой пояс твоей системы.
Сравнение дат
from datetime import date
today = date.today()
some_day = date(2025, 1, 1)
print(today > some_day) # True
diff = today - some_day
print(diff.days) # количество дней между датами
timedelta — сдвиг дат
from datetime import date, timedelta
today = date.today()
tomorrow = today + timedelta(days=1)
week_later = today + timedelta(days=7)
print(tomorrow) # завтра
print(week_later) # через неделю
Практический пример: фильтрация по дате
from datetime import datetime
items = [
{'dt': 1735689600, 'temp': -3},
{'dt': 1735776000, 'temp': -1},
{'dt': 1735862400, 'temp': 2},
]
seen_dates = set()
for item in items:
dt = datetime.fromtimestamp(item['dt'])
date_str = dt.strftime('%d.%m')
if date_str in seen_dates:
continue
seen_dates.add(date_str)
print(f"{date_str}: {item['temp']}°C")
💬 Comments (0)
No comments yet
Be the first to share your opinion about this article!