【问题标题】:How do I represent time spans in python for simple arithmetic? [duplicate]python - 如何在python中表示时间跨度以进行简单的算术? [复制]
【发布时间】:2020-12-29 17:17:15
【问题描述】:

我必须把这些时间加在一起

(2 hr and 50 min)+(1 hr and 20 min) = (4 hr and 10 min)

但是如何将这些两次对象作为输入呢? 我尝试使用嵌套列表和字典,但感觉不合适。

【问题讨论】:

  • 这些不是time 对象。
  • 不清楚这些“时间对象”是什么对象类型,因为那根本不是有效的python。如果您使用像datetime 这样的内置对象,您可以通过+ 运算符将两个timedeltas 添加在一起。请参阅:docs.python.org/3/library/datetime.html#available-types。目前尚不清楚您希望如何创建这些时间对象,或者为什么或如何尝试使用嵌套列表或字典。请提供一些背景信息,最好是minimal reproducible example

标签: python time


【解决方案1】:

datetime module 提供了一个用于此目的的timedelta class

import datetime

time1 = datetime.timedelta(hours=2, minutes=50)
time2 = datetime.timedelta(hours=1, minutes=20)

time3 = time1 + time2

timedelta 对象以秒和毫秒为单位存储一天中的小数部分。如果你想要 time3 以小时和分钟为单位,you'll have to compute them from the seconds and milliseconds

【讨论】:

  • 如何从用户输入中获取?
  • 这取决于用户输入数据的方式。如果它以单个字符串的形式出现,您可能想做something like this。如果您可以控制用户输入数据的方式,那么您可能需要搜索和/或询问有关在 python 中获取用户输入的单独问题。
【解决方案2】:

添加分钟和小时的一种方法是使用 Python 的 datetime 模块。首先,您指定时间,在本例中为小时和分钟。然后,使用 datetime.timedelta 添加时间。

这是一个例子:

import datetime

date_and_time = datetime.datetime(2020, 2, 19, 2, 50, 0)
print(date_and_time)  # 2020-02-19 02:50:00
time_change = datetime.timedelta(hours=1, minutes=20)
new_time = date_and_time + time_change

print(new_time)  # 2020-02-19 04:10:00

【讨论】:

    【解决方案3】:

    你可以尝试使用datetime,取float/int等普通输入,赋值给delta等变量,那么你应该可以进行加法了。

    from datetime import timedelta
    delta = timedelta(
         seconds=27,
         minutes=5,
         hours=8
    )
    
    delta2 = timedelta(
         seconds=33,
         minutes=54,
         hours=2
    )
    
    print (delta+delta2)
    

    输出将是:11:00:00

    如果需要,您可以添加更多字段,例如天、微秒、毫秒、周。

    【讨论】:

      猜你喜欢
      • 2016-05-22
      • 1970-01-01
      • 2011-05-07
      • 2020-05-03
      • 2021-05-11
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多