如何在日期时间添加特定时间?

时间:2019-04-22 17:41:42

标签: python datetime int

我想为datetime添加几个小时并使用:

date = date_object + datetime.timedelta(hours=6)

现在我想添加一个时间:
 time='-7:00'(字符串)加上4个小时。

我尝试了hours=time+4,但这不起作用。我认为我必须int这样的字符串,例如int(time),但这也不起作用。

2 个答案:

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

请参阅文档strptimedatetime format