Python задает время и время для определенного времени

Я хочу, чтобы дата была вчера в 11.30.

Вот мой код:

    import datetime
    yesterday = datetime.date.today () - datetime.timedelta (days=1) 
    PERIOD=yesterday.strftime ('%Y-%m-%d') 
    new_period=PERIOD.replace(hour=23, minute=30)
    print new_period

однако я получаю эту ошибку:

TypeError: replace() takes no keyword arguments

любая помощь будет оценена.

Ответы

Ответ 1

Сначала измените datetime.date.today() на datetime.datetime.today(), чтобы вы могли манипулировать временем дня.

Затем вызовите replace, прежде чем переводить время в строку.

Итак, вместо:

PERIOD=yesterday.strftime ('%Y-%m-%d') 
new_period=PERIOD.replace(hour=23, minute=30)

Сделайте это:

new_period=yesterday.replace(hour=23, minute=30).strftime('%Y-%m-%d')
print new_period

Также имейте в виду, что строка, в которую вы ее конвертируете, не содержит информации о часах или минутах. Если вас это интересует, добавьте %H для часа и %M для минутной информации в строку формата.

Ответ 2

Это то, что вы хотите?

from datetime import datetime
yesterday = datetime(2014, 5, 12, 23, 30)
print yesterday

Edited

from datetime import datetime
import calendar

diff = 60 * 60 * 24

yesterday = datetime(*datetime.fromtimestamp(calendar.timegm(datetime.today().utctimetuple()) - diff).utctimetuple()[:3], hour=23, minute=30)

print yesterday