检查unix时间是否在python3中的其他两个unix时间戳之间

时间:2018-10-13 10:29:36

标签: python-3.x unix-timestamp

我正在尝试创建一个小的python3脚本,该脚本检查输入的unix时间是否在当前unix时间与未来两周之间。

#Ask for the UNIX execution time. 
execution_time = input("When do you want to execute your command?: ")
if len(execution_time) <=0:
    print("Error: You have set a UNIX-time")
if (time.time()) < execution_time < (time.time())+1.2e6:
    print("The execution time is valid")
if execution_time < (time.time()):
    print("The execution time is in the past")
if execution_time > (time.time())+1.2e6:
    print("Error:The execution time is more than 2 weeks into the future")

但是我得到的错误是:

     Traceback (most recent call last): 
     File "flightplanner.py", line 38, in <module>
     if (time.time()) < execution_time < (time.time())+1.2e6:
     TypeError: '<' not supported between instances of 'float' and 'str'

我刚刚开始学习如何编程,因此有很多if语句可能不是一个好主意,但这只是一小段代码。

谢谢您能给我的帮助。

最佳 哈斯

1 个答案:

答案 0 :(得分:0)

错误代码表示您尝试使用“ <”将字符串(一段文本)与一个浮点数(一个数字)进行比较。对口译员来说,就像您在说“ Hello World”小于7吗? 当然,根据您的情况,您更有可能说的是“ 1000000000”比118483939小吗? 因此,您要做的就是获取输入,并告诉python它应该将其解释为数字。您可以使用

  

float(execution_time)

如果您需要建议,我也建议您使用 elif (if的缩写)和 else 。 例子:

if(num == 1):
    print(“Your number was 1”)
elif(num == 2):
    print(“Your number was 2”)
else:
    print(“Your number was not 1 or 2”)

这具有更快的优势,如果第一个测试成功,它将不会检查第二个和第三个,并且会使代码更具可读性。 else 的另一个优点是,即使其他测试没有成功,它也将始终运行,即使您甚至没有考虑过或者太懒而无法输入。

我要更改的另一件事是将时间一次放入一个变量,然后将其用于比较。 (我认为)这会稍微快一点,并使它更具可读性。

注意:每次我所说的“更快”都不会对您的程序产生任何明显的影响。您的程序应该立即运行,但是您可以想象,在较长的程序(经常使用该程序)或每个性能都至关重要的程序中,这可能会有所作为,因此最好从头开始学习。