【问题标题】:How do you split a time lapse into evenly sized chunks?你如何将时间间隔分成大小均匀的块?
【发布时间】:2019-03-18 12:22:29
【问题描述】:

我需要每隔几分钟将时间间隔分成大小均匀的块。例如。从现在到 1 小时前的时间,分为 12 块,每块 5 分钟。我如何在 Python 3 中实现这一点?

【问题讨论】:

  • 到目前为止你尝试过什么?
  • 听起来像是可以用除法和模数完成的事情。例如。 tmin / tchunk, tmin % tchunk
  • 在数字表示中,我可以得到两个时间的差异,然后除以块的数量。之后,只需将差异作为序列添加到初始时间。但我认为这效率不高。

标签: python python-3.x time


【解决方案1】:

你可以在 datetime 模块中使用 timedelta。

from datetime import datetime
from datetime import timedelta

start = datetime.now()
end = datetime(2019, 3, 19, 18, 00, 00)
while start < end:
    print(start)
    start += timedelta(minutes=5)    # add 5 minutes to start time

【讨论】:

    【解决方案2】:

    dateutil.rrule 可能是最简单的长期方法,尽管 API 有点复杂:

    rrule(dtstart=datetime.now() - timedelta(hours=1), until=datetime.now(), freq=MINUTELY, interval=5)
    

    或者,您可以很容易地手动执行此操作,只需获取开始和停止日期时间,并将开始时间递增适当的 timedelta 直到它超过结束界限。如果您想要特定数量的块而不是特定的块长度,请计算开始和结束之间的差异并除以您的数量。

    occurrences = []
    end = datetime.now()
    st = datetime.now() - timedelta(hours=1)
    while st < end: 
        occurrences.append(st)
        st += timedelta(minutes=5)
    

    两者都比直接处理时间戳要慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-03
      • 2021-06-24
      • 1970-01-01
      • 2022-01-20
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多