我正在尝试在24小时内接受用户输入,然后对这些输入进行计算(加时,减时等)。我有以下内容:
# get start time
start_t = int(input("Start time: "))
print(start_t)
# get stop time
stop_t = int(input("Stop time: "))
print(stop_t)
问题是:
当我打印时间时,如果有前导零(例如0200
),它将打印200
。
当我尝试进行任何加法或减法运算时,它无法正确显示。例如,如果我在2200
输入停止时间,并且我希望计算的时间为stop_t - 8
(小时),则显示0
。我希望它显示0000
。我注意到的另一件事是,如果执行stop_t - 8
,它将显示2192
。我必须执行stop_t - 800
才能获得0
。这似乎是错误的处理方式。
我想我必须做某种datetime
才能完成这项工作,但到目前为止,我的搜索都是空手而归。任何帮助表示赞赏!
input()
方法只能从终端获取文本。
您必须将文本解析为datetime
对象才能进行操作。
例如:
import datetime
time_format = "%d-%m-%Y %H:%M:%S" # example 01-01-2019 23:00:00
# get start time
start_time_input = input("Start time:")
print(start_time_input)
# get stop time
stop_time_input = input("Stop time:")
print(stop_time_input)
# conversion
start_t = datetime.datetime.strptime(start_time_input, time_format)
print(start_t)
stop_t = datetime.datetime.strptime(stop_time_input, time_format)
print(stop_t)
如果start_time_input
或stop_time_input
不遵守time_format
格式,则会出现ValueError
异常。
[拥有datetime
对象时,您可以做很多事情,例如减法
import datetime
start_t = datetime.datetime.strptime("01-01-2019 22:00:00", time_format)
stop_t = datetime.datetime.strptime("01-01-2019 23:00:00", time_format)
time_difference = stop_t - start_t
print(time_difference)
# output is 1:00:00
有关更多功能,请参见datetime库https://docs.python.org/3/library/datetime.html