Python-如何以08:09:00格式而不是1900-01-01 08:09:00格式生成时间

Python-如何以08:09:00格式而不是1900-01-01 08:09:00格式生成时间,python,time,Python,Time,这会使时间增加30分钟,例如07:39 HOUR_ON = datetime.time(int(array_on[0]), int(array_on[1])) HOUR_ON = str(HOUR_ON) a = datetime.datetime.strptime(HOUR_ON,'%H:%M:%S') HOUR_ON = a + datetime.timedelta(0,1800) # 1800 (30 mins) open door 30 mins later 但给了我“1900-01-

这会使时间增加30分钟,例如07:39

HOUR_ON = datetime.time(int(array_on[0]), int(array_on[1]))
HOUR_ON = str(HOUR_ON)
a = datetime.datetime.strptime(HOUR_ON,'%H:%M:%S')
HOUR_ON = a + datetime.timedelta(0,1800) # 1800 (30 mins) open door 30 mins later
但给了我“1900-01-01 08:09:00”。我如何让它给出“08:09:00”

对我来说,最重要的是格式-代码可以工作并增加30分钟(正如已经指出的),我想从中删除“1900-01-01”,只留下08:09:00。我没时间工作来做这件事。小时将在我使用前打印07:39

HOUR_ON = str(HOUR_ON)
当我完成时,尽管我想要“08:09:00”。谢谢

加成

如果将代码更新为

HOUR_ON = datetime.time(int(array_on[0]), int(array_on[1]))
HOUR_ON = str(HOUR_ON)
a = datetime.datetime.strptime(HOUR_ON,'%H:%M:%S')
HOUR_ON = a + datetime.timedelta(0,1800) # 1800 (30 mins) open door 30 mins later
HOUR_ON.strftime('%H:%m:%S')
print HOUR_ON

我仍然得到1900-01-01 08:09:00,这对我来说很好。我看不出你的代码有任何问题。可能需要重新检查小时数变量

>>> HOUR_ON = str("08:09:00")
>>> a = datetime.datetime.strptime(HOUR_ON,'%H:%M:%S')
>>> HOUR_ON = a + datetime.timedelta(0,1800)
>>> print HOUR_ON
1900-01-01 08:39:00

此代码在python 2和python 3上都进行了测试:

import datetime

#define the input time string
input_time_string = '23:39:00'
time_format_string = '%H:%M:%S'
print('input time string = {time}'.format(time=input_time_string))

#define a magic number that will be used by timedelta
seconds_in_30_minutes = 1800

#create a datetime object initialized to the time provided by the input time
#string defined above
datetime_obj = datetime.datetime.strptime(input_time_string, time_format_string)

#add 1800 seconds to the datetime object
datetime_obj_plus_30_minutes = datetime_obj + datetime.timedelta(0, seconds_in_30_minutes)

#format the datetime object as a string containing only the time
output_time_string = datetime_obj_plus_30_minutes.strftime(time_format_string)

#print the time string
print('output time string = {time}'.format(time=output_time_string))
上述代码将以下内容打印到标准输出,表明即使在第二天输入时间后不足30分钟,它仍能工作:

input time string = 23:39:00
output time string = 00:09:00

如果我理解正确的话,在我把赛斯的答案包括进去之后,我把时间分成两部分,再把它作为一个整数,以我需要的格式加上30分钟,得到我的答案-谢谢大家(甚至是-)


谢谢,但我的代码可以工作-我正在尝试格式化输出或删除日期-是的,我不理解python datetime和time fullyno我看不到重复-我的代码增加了30分钟或1800分钟,这不重要-也许我的标题写得不好,但我不是在问如何在.strftime(“%H:%m:%S”)上添加30分钟
HOUR\u
将datetime对象格式化为要搜索的字符串。看见请注意,您的问题使用的是
strtime
而不是
strftime
@SethDifley,我已根据建议添加并更新了我的问题-听起来像是我想要的,但我仍然得到了相同的答案result@tamus您问题中的代码使用了,但没有定义,
array\u on
。即使定义了上的
array\u,定义
上的
HOUR\u也会导致运行时错误,因为
datetime.time只使用一个参数,而不是两个参数。下面我的答案将介绍如何使用datetime库将时间字符串转换为时移字符串。如果我下面的答案有用,请做相应的标记。感谢你花时间在这方面,并阅读,以了解我不需要添加分钟-很抱歉,我不能给你更多的勾号,因为这里的负号使我的代表下降。您的代码运行正常,帮助我得到了答案-我需要再添加两行代码,以使所有工作正常,如下所示
# add 30 mins to opening time
HOUR_ON = datetime.time(int(array_on[0]), int(array_on[1]))
HOUR_ONstr = str(HOUR_ON)
a = datetime.datetime.strptime(HOUR_ONstr,'%H:%M:%S')
HOUR_ON30 = a + datetime.timedelta(0,1800) # 1800 (30 mins) open door 30 mins later
HOUR_ONHMS = HOUR_ON30.strftime('%H:%M:%S')
array_on = HOUR_ONHMS.split(":")

# open and close times are set here
HOUR_ON = datetime.time(int(array_on[0]), int(array_on[1]))