将时间添加到日期时间



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

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

现在我想给my_time 增加23小时59分钟

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

之后添加时间;您可以使用datetime.replace()方法来生成新的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()类方法将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)

首先,根据您提供的日期字符串,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)

熊猫方式:

import pandas as pd 
df['time'] = pd.to_datetime(ddf['time']) + pd.Timedelta('16:00:00')

相关内容

  • 没有找到相关文章

最新更新