首页 > 解决方案 > 错误消息时差

问题描述

我有一个关于代码的问题。我刚刚开始了编程课程,这显然不是一个非常有效的代码。它是更大代码的一部分,但这是我得到错误输出的地方。

我有一个以公里为单位的距离,以公里/小时为单位的速度和到达时间 (arr) 作为列表 [月、日、小时、分钟] 我使用 y = time.time()-1577793600 来获取今年以秒为单位的当前时间. (我要减去的数字是自 Unix 纪元时间以来的秒数。(我知道这是一种可怕的做法,但我认为这有点道理)。另外,time_to_destination 是到达目的地所需的时间秒。

import time

distance = 1000

speed = 3

arrival = [10, 13, 11, 30]

y = time.time()-1577793600
time_to_destination = (distance*1000) / (speed / 3.6)

arr = ((arrival[0]-1)*(30*24*3600)+ (arrival[1]-1)*(24*3600) + (arrival[2])*(3600)+(arrival[3]))

ti = arr - time_to_destination
            
if arr < y:
    return 'Date is in the past'
            
elif y > ti:
     return 'You are too late'

但是,这应该返回“你来得太晚了”,因为到达时间不是过去的时间,但我无法以我给定的速度完成它。但是,输出是“过去的日期”。为什么会这样?

标签: pythontime

解决方案


关于您的变量: 1577793600实际上是 2019 年 12 月 31 日星期二 12:00:00 PM。不应该这样1577836800吗?

分钟参数也没有发生转换。您需要将分钟乘以 60。

arr = ((arrival[0]-1)*(30*24*3600)+ (arrival[1]-1)*(24*3600) + (arrival[2])*(3600)+(arrival[3]*(60)))

使用 30 作为每月天数也是一个近似值,可能会给您错误的结果。

我真的建议查看datetime 模块


推荐阅读