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

时间:2016-11-06 14:25:16

标签: 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-01 08:09:00”。如何让它给“08:09:00”

对我来说重要的是格式 - 代码可以工作并增加30分钟(正如已经指出的那样)我想删除“1900 -01-01“从此开始,只留08:09:00。我无法为此付出努力。 HOUR_ON将在我使用

HOUR_ON = str(HOUR_ON)

之前打印07:39但我完成后虽然我想要“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

3 个答案:

答案 0 :(得分:0)

对我来说很好。我没有看到您的代码有任何问题。可以重新检查HOUR_ON变量

ValueError: Argument must be a dense tensor: [[1, 2, 3], [4, 5], [1, 4, 6, 7]] - got shape [3], but wanted [3, 3].

答案 1 :(得分:0)

此代码在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

答案 2 :(得分:0)

如果我理解这一点,在我收到Seth的答案之后,我就把时间拆分并再次作为一个整体加入到我的答案中,以我需要的格式添加30分钟 - 感谢所有人(甚至是 - '多个)

# 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]))