Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python set datetime hour to be a specific time

I am trying to get the date to be yesterday at 11.30 PM.

Here is my code:

    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 

however i am getting this error:

TypeError: replace() takes no keyword arguments 

any help would be appreciated.

like image 689
jxn Avatar asked May 13 '14 22:05

jxn


People also ask

How do I convert a datetime to a specific date in Python?

Use datetime. strftime(format) to convert a datetime object into a string as per the corresponding format . The format codes are standard directives for mentioning in which format you want to represent datetime. For example, the %d-%m-%Y %H:%M:%S codes convert date to dd-mm-yyyy hh:mm:ss format.


2 Answers

First, change datetime.date.today() to datetime.datetime.today() so that you can manipulate the time of the day.

Then call replace before turning the time into a string.

So instead of:

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

Do this:

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

Also keep in mind that the string you're converting it to displays no information about the hour or minute. If you're interested in that, add %H for hour and %M for the minute information to your format string.

like image 190
huu Avatar answered Sep 21 '22 18:09

huu


You can use datetime.combine(date, time, tzinfo=self.tzinfo)

import datetime yesterday = datetime.date.today () - datetime.timedelta (days=1) t = datetime.time(hour=23, minute=30) print(datetime.datetime.combine(yesterday, t)) 
like image 36
Yuriy Arhipov Avatar answered Sep 20 '22 18:09

Yuriy Arhipov