我想为datetime
添加几个小时并使用:
date = date_object + datetime.timedelta(hours=6)
现在我想添加一个时间:
time='-7:00'
(字符串)加上4个小时。
我尝试了hours=time+4
,但这不起作用。我认为我必须int
这样的字符串,例如int(time)
,但这也不起作用。
答案 0 :(得分:1)
您需要转换为日期时间对象,以便将timedelta添加到当前时间,然后将其返回到时间部分。
使用date.today()
仅使用任意当前日期,并将时间设置为您提供的时间。这样一来,您可以增加几天的时间并将时钟重置为00:00。
dt.time()
打印出您想要的结果。
from datetime import date, datetime, time, timedelta
dt = datetime.combine(date.today(), time(7, 00)) + timedelta(hours=4)
print dt.time()
编辑:
要从字符串time='7:00'
到您可以在冒号上分割的内容,然后分别引用它们。
this_time = this_time.split(':') # make it a list split at :
this_hour = this_time[0]
this_min = this_time[1]
修改2: 然后将它们放在一起:
from datetime import date, datetime, time, timedelta
this_time = '7:00'
this_time = this_time.split(':') # make it a list split at :
this_hour = int(this_time[0])
this_min = int(this_time[1])
dt = datetime.combine(date.today(), time(this_hour, this_min)) + timedelta(hours=4)
print dt.time()
如注释中所述,如果您已经有完整的日期可以使用,则应使用strptime将其转换为日期时间。我认为还有另一个答案将介绍如何使用它,因此我将不举一个例子。
答案 1 :(得分:1)
更好地解析时间,如下所示,并访问datetime属性以从解析的datetime对象获取时间成分
input_time = datetime.strptime(yourtimestring,'yourtimeformat')
input_seconds = input_time.second # for seconds
input_minutes = input_time.minute # for minutes
input_hours = input_time.hour # for hours
# Usage: input_time = datetime.strptime("07:00","%M:%S")
休息一下,您可以使用datetime.timedelta
方法来编写持续时间。
new_time = initial_datetime + datetime.timedelta(hours=input_hours,minutes=input_minutes,seconds=input_seconds)
请参阅文档strptime 和datetime format