Python-时间输入和相加/相减

问题描述 投票:0回答:1

我正在尝试在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)

问题是:

  1. 当我打印时间时,如果有前导零(例如0200),它将打印200

  2. 当我尝试进行任何加法或减法运算时,它无法正确显示。例如,如果我在2200输入停止时间,并且我希望计算的时间为stop_t - 8(小时),则显示0。我希望它显示0000。我注意到的另一件事是,如果执行stop_t - 8,它将显示2192。我必须执行stop_t - 800才能获得0。这似乎是错误的处理方式。

我想我必须做某种datetime才能完成这项工作,但到目前为止,我的搜索都是空手而归。任何帮助表示赞赏!

python-3.x datetime
1个回答
0
投票

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_inputstop_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

© www.soinside.com 2019 - 2024. All rights reserved.