【问题标题】:Python: Unable to add minutes to give time [duplicate]Python:无法添加分钟来给时间[重复]
【发布时间】:2019-03-03 07:12:11
【问题描述】:

我正在尝试将分钟添加到另一个时间戳。我的代码如下所示

from datetime import datetime
from datetime import timedelta 

start_time = '06:52:00'
easy_pace_time = '00:08:15'
tempo_pace_time = '00:07:12'
easy_pace_miles = 2
tempo_pace_miles = 3 
FMT = '%H:%M:%S'

easy_strip = datetime.strptime( easy_pace_time, FMT)
easy_strip_seconds = (easy_strip.minute * 60) + easy_strip.second
easy_pace_total = easy_pace_miles * easy_strip_seconds

tempo_strip = datetime.strptime( tempo_pace_time, FMT)
tempo_strip_seconds = ( tempo_strip.minute * 60 ) + tempo_strip.second
tempo_pace_toal = tempo_pace_miles * tempo_strip_seconds

total_running_time = (( easy_pace_total + tempo_pace_toal ) / 60 )
print(total_running_time)

print(str ( timedelta(minutes=total_running_time) ))

# Tried this as well but failed with as directly two timestamps can not be added in Python
#return_time = datetime.strptime(start_time, FMT) + datetime.strptime( str ( timedelta(minutes=total_running_time) ), FMT)
#print(return_time)

datetime.strptime(start_time, FMT) + datetime.timedelta( minutes = total_running_time)

在执行此操作时出现错误

Traceback (most recent call last):
  File "C:/Users//Dropbox/Python_code/ThinkPython/timpo_pace_cal.py", line 30, in <module>
    datetime.strptime(start_time, FMT) + datetime.timedelta( minutes = total_running_time)
AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'

【问题讨论】:

  • 在顶部查看你的导入;你使用了from datetime import datetimefrom datetime import timedelta。这应该为您提供有关如何解决此问题的线索; datetime.timedelta 不是这里模块的属性。
  • 接下来,您可能不想在这里使用datetime 来处理持续时间datetime 适用于时间点,而不适用于经过一段时间(timedelta 对象主要用于移动时间点)。
  • 您最好在: 上拆分输入,将数字转换为整数,然后将这些整数相乘以得出总秒数:def parse_duration(duration):parts = [int(p) for p in duration.split(':')]、@ 987654332@.
  • @MartijnPieters,是的,你的 cmets 很有意义。我误解了。谢谢。
  • 另外一个不使用datetime 的动机:因为模块期望time 是一个时间点,所以格式限制为24 小时制。无法解析超过 24 小时的任何持续时间!我认为在为个人公路/越野/田径比赛或训练跑步计时(人类通常不能连续 24 小时跑步)时,您不会在这里遇到这种情况,但如果您要跟踪,这可能是个问题例如,总运行时间。

标签: python python-3.x datetime


【解决方案1】:

改变

datetime.strptime(start_time, FMT) + datetime.timedelta( minutes = total_running_time)

datetime.strptime(start_time, FMT) + timedelta( minutes = total_running_time)

【讨论】:

  • 工作。但我在想 timedelta 是如何直接可用的?可能是我错误计算了 datetime 和 timedelta 的范围吗?
  • 因为你已经在你的脚本顶部导入了它......from datetime import timedelta
猜你喜欢
  • 2019-12-20
  • 2015-04-02
  • 2015-12-23
  • 2017-09-09
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
相关资源
最近更新 更多