I have a date string like this and then use strptime()
So its like this
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%Y')
and now I want to add 23 hours and 59 minutes to my_time
I have tried .timedelta
but it doesn't work? How could I do this?
Add time afterwards; you can do so with the datetime.replace()
method to produce a new datetime
object:
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time = my_time.replace(hour=23, minute=59)
The datetime.strptime()
sets the hour and minute values to the default, 0
. Note that for a two-digit year (like 15
) you'd use %y
, not %Y
, which is for a four-digit year.
You could also use the datetime.combine()
class method to pair up a date
and a time
object:
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time = datetime.datetime.combine(my_time.date(), datetime.time(23, 59))
If you feel you must use a timedelta()
, take into account that adding it will again produce a new datetime
object. You could use augmented assignment to add it 'in-place':
my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time += datetime.timedelta(hours=23, minutes=59)
Demo:
>>> import datetime
>>> my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
>>> my_time.replace(hour=23, minute=59)
datetime.datetime(2015, 7, 5, 23, 59)
>>> datetime.datetime.combine(my_time.date(), datetime.time(23, 59))
datetime.datetime(2015, 7, 5, 23, 59)
>>> my_time + datetime.timedelta(hours=23, minutes=59)
datetime.datetime(2015, 7, 5, 23, 59)
Firstly, based on the date string you are providing, the format
seems to be wrong , you should use %y
(small y) for 2 digit years, %Y
(capital Y) is for 4 digit years.
Then you can add time to my_time using timedelta as follows, but the addition operation produces a new datetime object, does not change the my_time
in place.
Hence, you will need to assign it back to your my_time
like this -
>>> import datetime
>>> my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
>>> my_time = my_time + datetime.timedelta(hours=23,minutes=59)
>>> my_time
datetime.datetime(2015, 7, 5, 23, 59)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With