Python转换军事时间用户输入并计算工作时间(datetime.timedelta)

Python转换军事时间用户输入并计算工作时间(datetime.timedelta),datetime,time,python-2.7,Datetime,Time,Python 2.7,这里没有 我一直在尝试将用户在军事时间的输入转换成标准时间。代码到目前为止仍然有效,但我需要从结束时间减去12小时,以标准时间显示。如何使用datetime.time执行此操作?此外,是否需要将原始用户输入转换为整数以执行datetime.timedelta计算?前面的问题似乎无法回答我的编码问题 我的代码是: def timeconvert(): print "Hello and welcome to Python Payroll 1.0." print "" # Us

这里没有

我一直在尝试将用户在军事时间的输入转换成标准时间。代码到目前为止仍然有效,但我需要从结束时间减去12小时,以标准时间显示。如何使用datetime.time执行此操作?此外,是否需要将原始用户输入转换为整数以执行datetime.timedelta计算?前面的问题似乎无法回答我的编码问题

我的代码是:

def timeconvert():
    print "Hello and welcome to Python Payroll 1.0."
    print ""
    # User input for start time. Variable stored. 
    start = raw_input("Enter your check-in time in military format (0900): ") 
    # User input for end time. Variable stored.
    end = raw_input("Enter your check-out time in military format (1700): ") 
    print ""

    # ---------------------------------------------------------------------------
    # Present user input in standard time format hhmm = hh:mm
    # ---------------------------------------------------------------------------
    import datetime, time
    convert_start = datetime.time(hour=int(start[0:2]), minute=int(start[2:4]))
    # need to find a way to subtract 12 from the hour to present end time in standard time
    convert_end = datetime.time(hour=int(end[0:2]), minute=int(end[2:4]))
    print 'You started at', convert_start.strftime("%H:%M"),'am', 'and ended at', convert_end.strftime("%H:%M"), 'pm' 

    # ---------------------------------------------------------------------------
    # Use timedelta to caculate time worked.
    # ---------------------------------------------------------------------------
    # print datetime.timedelta
timeconvert()
raw_input("Press ENTER to exit program") # Closes program.
谢谢。

您可以使用
strftime(“%I:%M%p”)
来获取标准的12小时格式,最后加上“AM”或“PM”。有关
datetime
字符串格式的详细信息,请参阅

此外,虽然本机不支持它,但您可以简单地使用两个
datetime.time
实例作为
timedelata
构造函数的一部分进行计算

下面的代码应该足够了,但一定要使用正确的错误检查。;)
--美联社

start=raw_输入(“以军用格式(0900)输入您的入住时间”)
end=原始输入(“以军事格式(1700)输入您的退房时间”)
#将用户输入转换为日期时间实例
start\u t=datetime.time(小时=int(开始[0:2]),分钟=int(开始[2:4]))
end_t=datetime.time(小时=int(结束[0:2]),分钟=int(结束[2:4]))
delta_t=datetime.timedelta(
小时=(结束小时-开始小时),
分钟=(结束时间分钟-开始时间分钟)
)
#日期时间格式
fmt=“%I:%M%p”
打印“您从%s开始到%s%”(开始\t.strftime(fmt),结束\t.strftime(fmt))
打印“您为%s工作过%”(增量)
Aha,我了解文档中的注释#2,现在我看到了一个关于格式工作原理的示例。我肯定也会使用错误检查。非常感谢。
def time12hr(string):
    hours  =  string[:2] 
    minutes = string[2:]
    x = " "
    if int(hours) == 12:
       x = "p.m."
       hours = "12"
    elif int(hours) == 00:
         x = "a.m."
         hours = "12" 
    elif int(hours) > 12:
       x = "p.m."
       hours  = str(int(hours) - 12)
    else:
        x = "a.m."
    return "%s:%s %s"%(hours ,minutes,x)
print time12hr('1202')
print time12hr('1200')
print time12hr('0059')
print time12hr('1301')
print time12hr('0000')