Есть ли более краткий способ получения сегодняшней даты в указанное время в Python? - PullRequest
0 голосов
/ 25 октября 2019

Мне нужен объект datetime, дата которого является сегодняшней датой, но время которого указано (3 часа ночи).

Я пытался это сделать:

dt.now().date() + timedelta(hours=3)

-> Не могу добавить timedeltaк объекту dt.date

foo = dt.now()
foo.hour = 3
foo.minute = 0
foo.second = 0

-> Недоступно для записи

Это работает, но выглядит некрасиво:

foo = dt(dt.now().year, dt.now().month, dt.now().day, 3,0,0,0)

Или, альтернативно:

foo = dt(dt.now().year, dt.now().month, dt.now().day) + timedelta(hours=3)

Есть ли более чистый, более питонский способ сделать это? Такое ощущение, что «сегодня в определенное время» должно быть довольно распространенным случаем ...

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Точно так же, как datetime.datetime имеет метод класса now, datetime.date имеет метод today (которыйдругой формы datetime.datetime.today).

Вы можете использовать этот метод вместе с datetime.datetime.combine для достаточно чистого раствора:

_3am = time(3, 0, 0)
dt = datetime.combine(date.today(), _3am)
1 голос
/ 25 октября 2019

Попробуйте следующее:

foo = dt.datetime.combine(dt.date.today(), dt.time(3))
...