#python-3.x #datetime #timedelta
#python-3.x #datetime #timedelta
Вопрос:
я хотел получить дату предыдущего дня в UTC.
from datetime import datetime, timedelta
month_now = str(datetime.date(datetime.utcnow()))[:-3]
>>> print(month_now)
2021-01
И теперь
previous_day = str(datetime.date(datetime.utcnow()-datetime.timedelta(days=1)))
Ошибка атрибута: объект типа ‘datetime.datetime’ не имеет атрибута ‘timedelta’
Пожалуйста, помогите.Во всех связанных сообщениях предлагалось что-то вроде, но нужно что-то с datetime.date
Previous_Date = datetime.datetime.today() - datetime.timedelta(days=1)
Ответ №1:
Прекратите использовать utcnow и utcfromtimestamp — вместо этого будьте конкретны , используя timezone.utc
.
from datetime import datetime, timedelta, timezone
todayUTC = datetime.now(timezone.utc).date()
yesterdayUTC = today - timedelta(1)
print(todayUTC, yesterdayUTC)
# 2021-01-08 2021-01-07
Также не datetime
то, что классы timedelta
и т.д. являются классами из модуля datetime. Если вы импортируете их явно ( from datetime import ...
), вы должны использовать их соответствующим образом, отсюда и ошибка. Другой вариант — импортировать модуль, чтобы затем вы могли вызывать все его классы, например datetime.timedelta
, , datetime.datetime
и так далее. Документы. Тогда ваш исходный код должен был бы выглядеть примерно так
import datetime
month_now = str(datetime.datetime.utcnow().date())[:-3]
previous_day = str((datetime.datetime.utcnow()-datetime.timedelta(days=1)).date())
print(month_now, previous_day)
# 2021-01 2021-01-07
Комментарии:
1. Большое спасибо!! Но по-прежнему не удается получить другой вариант, упомянутый выше, думал, что получил желаемый результат, я искал другой вариант, упомянутый в комментарии
2. @div: я добавил пример, возможно, это поможет прояснить ситуацию.