添加时间到日期时间

时间:2015-07-04 08:12:35

标签: python datetime time python-datetime

我有一个这样的日期字符串,然后使用strptime()所以就像这样

my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%Y')

现在我想在my_time

添加23小时59分钟

我试过.timedelta但是它不起作用?我怎么能这样做?

2 个答案:

答案 0 :(得分:9)

之后加时间;您可以使用datetime.replace() method生成新的datetime对象:

my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time = my_time.replace(hour=23, minute=59)

datetime.strptime()将小时和分钟值设置为默认值0。请注意,对于两位数的年份(例如15),您使用的是%y,而不是%Y,这是一个四位数的年份。

您还可以使用datetime.combine() class method配对datetime对象:

my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time = datetime.datetime.combine(my_time.date(), datetime.time(23, 59))

如果您认为必须使用timedelta(),请考虑添加它将再次生成新的datetime对象。您可以使用扩充分配来就地添加':

my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%y')
my_time += datetime.timedelta(hours=23, minutes=59)

演示:

>>> 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)

答案 1 :(得分:6)

首先,根据您提供的日期字符串,format似乎有误,您应该使用%y(小y)2位数,%Y(大写字母Y) )是4位数年。

然后您可以使用timedelta为my_time添加时间,如下所示,但添加操作会生成一个新的datetime对象,而不会更改my_time

因此,您需要将其分配回您的my_time -

>>> 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)