添加时间到日期时间

spe*_*f10 3 python time datetime python-datetime

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

my_time = datetime.datetime.strptime('07/05/15', '%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)

现在我要加23小时59分钟 my_time

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

Mar*_*ers 9

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

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

datetime.strptime()套小时和分钟值恢复为默认,0.请注意,对于两位数的年份(如15),您使用的%y不是%Y四年级的年份.

您还可以使用datetime.combine()类方法配对a datetime对象:

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

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

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

演示:

>>> 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)
Run Code Online (Sandbox Code Playgroud)


Ana*_*mar 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)
Run Code Online (Sandbox Code Playgroud)