Исправляем ошибку AttributeError: 'datetime' в Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Ошибка AttributeError: модуль 'datetime' не имеет атрибута 'strptime', как правило, свидетельствует о неправильном импорте или проблемах с путаницей в названиях. Чтобы её устранить:

Python
Скопировать код
from datetime import datetime
# Правильное преобразование строки в объект datetime
date_object = datetime.strptime('2023-01-01', '%Y-%m-%d')

Теперь метод strptime работает корректно и преобразует строку в объект типа datetime.

Кинга Идем в IT: пошаговый план для смены профессии

Профессиональное использование strptime: рекомендации

Проверьте свои импорты

Метод strptime относится к классу datetime, а не к модулю, поэтому важно обращать внимание на способ импортирования:

Python
Скопировать код
# Они — разные сущности, хотя и названия у них схожи. Очень игривые.
from datetime import datetime  
datetime.strptime("2021-12-25", "%Y-%m-%d") # Всё прекрасно!

import datetime
datetime.strptime("2021-12-25", "%Y-%m-%d") # Ой, ошибка.

Понимайте структуру библиотеки

datetime представлен в двух ролях: как модуль и как класс внутри этого модуля. Для уверенности в работе с документацией:

Python
Скопировать код
# Правильный импорт: из модуля datetime мы импортируем класс datetime.
from datetime import datetime
datetime.strptime('2023-01-01', '%Y-%m-%d')

Указывайте форматы даты корректно

strptime требует точного соответствия вашему формату даты, не забывайте его указывать:

Python
Скопировать код
# Маленькое напоминание: '%Y-%m-%d' – это формат 'Год-Месяц-День'.
datetime.strptime('2023-01-01', '%Y-%m-%d')
# Формат может меняться в зависимости от задачи:
# '%d/%m/%Y' для формата 'День/Месяц/Год'
# '%m-%d-%Y %H:%M:%S' для формата 'Месяц-День-Год Час:Минута:Секунда'

Избегайте распространённых ошибок

Не импортируйте целиком библиотеки, это может вызвать проблемы с дублированием имён. Время от времени обновляйте свой код, чтобы предотвратить ошибки выполнения:

Python
Скопировать код
# Приближается зима, надо быть готовым. Импортируйте с осторожностью.
import time
from datetime import datetime
# ...немного кода...
datetime.strptime(...)  # На этот раз всё в порядке.

Визуализация

Представим для наглядности импорты из модуля datetime как великие дома в Игре престолов:

| Дом Старков (import datetime)       | 🐺  | Дом Таргариен (класс datetime) |

Поиск strptime можно представить как поиски дракона:

| Пoиск дракона:                      | 🐉 'strptime' – дракон |
| ----------------------------------- | ----------------------- |
| Найден в Доме Таргариен?            | 🚫                      |

Неправильное использование strptime напоминает поиск дракона в неподходящем доме!

Исправленная версия:

| Наследник Железного трона:          | 👑 Дом 'datetime'        |
| ----------------------------------- | ------------------------- |
| `strptime` найден как дракон?       | ✅ (datetime.datetime.strptime) |

Чтобы вызвать strptime, обратитесь к подходящему наследнику (datetime.datetime)!

И вуаля: `datetime.datetime.strptime`, а не просто `datetime.strptime`.

Полезные материалы

  1. datetime — Основные типы данных для работы с датами и временем — Документация Python 3.12.2 – Официальная документация Python: здесь вы найдёте всё необходимое для работы с datetime.
  2. Использование Python datetime для обработки дат и времени – Real Python – Подробное руководство по возможностям datetime.
  3. Справочник по форматированию даты и времени datetime strftime – Полезная информация о форматировании дат и времени в Python.
  4. AttributeError: модуль 'datetime' не имеет атрибута 'strptime' – примеры кода – Здесь обсуждаются распространённые проблемы, которые могут вызвать AttributeError, а также способы их предотвращения.
  5. Как преобразовать строку с указанием временной зоны в datetime в Python без dateutil – Полезные советы по преобразованию строк, содержащих информацию о временной зоне.
  6. Различия между модулями datetime и time – Обсуждение экспертов о том, в чем разница между модулями datetime и time, с примерами использования.