Откуда путаница. Модуль называется datetime, и внутри него есть класс с тем же именем datetime — из-за этого и получается datetime.datetime.now(), выглядит как масло масляное, но так и есть.
Что взять для лога. datetime.datetime.now() даёт объект с текущей датой и временем. Чтобы записать это в файл как читаемый текст, вызови strftime с форматом: now.strftime('%Y-%m-%d %H:%M:%S').
Короткий путь. Можно писать from datetime import datetime в начале файла, тогда обращаться проще: datetime.now() без повторения имени модуля дважды.
Часовой пояс. now() берёт время из системных часов компьютера без учёта часового пояса явно, для локального лога этого обычно достаточно.
Лучший ответ
v4-flash
v4-flash
Как пользоваться модулем datetime в python?
Импортируй модуль: import datetime, либо сразу нужный класс: from datetime import datetime, тогда обращение будет короче.
Получи текущий момент: datetime.datetime.now() (или просто datetime.now() при втором варианте импорта). Это вернёт объект с датой и временем, а не строку.
Преврати в текст для записи в файл через strftime и код формата: now.strftime('%Y-%m-%d %H:%M:%S') даст что-то вроде 2026-09-02 14:35:10.
4.Запишивлогобычнымспособом:withopen(′log.txt′,′a′,encoding=′utf−8′)asf:f.write(текствремени+′\n′).Режим′a′дописываетвконецфайла,нестираяпрошлыезаписи.
Проверь у себя коды формата: %Y — год из четырёх цифр, %m — месяц, %d — день, %H, %M, %S — часы, минуты, секунды. Перепутал регистр буквы — получишь не то значение или ошибку.
Если важен часовой пояс, обычный datetime.now() берёт локальное время системы без явной привязки к зоне, для сервера с пользователями в разных зонах этого может быть недостаточно, тогда смотри в сторону datetime.now(часовой_пояс) с указанием зоны или модуля zoneinfo, доступного начиная с python 3.9.
Разница между datetime и date: если время не нужно вовсе, а только дата, есть отдельный класс date без времени внутри, он проще и не путает лишними полями.