基于时间和距离的平均速度 - Python

时间:2017-08-22 13:31:08

标签: python-3.x time distance

我正在尝试弄清楚如何解决我的问题,但它一直在失败。

所以我目前有这段代码:

@staticmethod
def avg_speed():
    # Speed = Distance ÷ Time
    cur_time = datetime.datetime.now().replace(microsecond=0)
    db_time_record = DB().start_time()
    time_diff = cur_time - db_time_record
    # print(str(time_diff).split(":"))
    total_distance = DB().get_total_distance()
    result = (total_distance / (float(time_diff.total_seconds()))) * 60
    return round(result, 2)

但问题是,平均速度如此之高,速度是不正确的......现在,DB()记录的MySQL DATETIME object是什么。

看起来像是:datetime.now().strftime("%Y-%m-%d %H:%M:%S")2017-08-22 15:28:19

现在我想要的是,如代码中所述,是基于行进距离和时间的平均速度。距离以米为单位,时间应以秒为单位?

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我没有MySQL数据库可用于测试您的代码,但是如果您可以将数据库中的start_time作为字符串读取,格式如" 2017-08-22 15:28:19& #34;然后以下示例显示如何进行速度计算:

import datetime

# (simulate reading time from database as string)
time_string_from_db = "2017-08-22 15:28:19"

dbtime              = datetime.datetime.strptime(time_string_from_db, "%Y-%m-%d %H:%M:%S")
cur_time            = datetime.datetime.now().replace(microsecond=0)

print ("dbtime:      " + repr(dbtime))
print ("cur_time:    " + repr(cur_time))

elapsed = cur_time - dbtime
seconds = elapsed.total_seconds()

print ("elapsed:     " + repr(elapsed))
print ("seconds:     " + repr(seconds))

distance = 500
speed = distance / seconds

print ("speed:       " + repr(speed))

希望其中一些可能有用。