【问题标题】:Generate interval based timestamps in python在python中生成基于间隔的时间戳
【发布时间】:2017-12-22 20:06:11
【问题描述】:

什么是生成时间戳系列的好方法,间隔为 5 分钟,开始时间为 09:10:00,结束时间为 15:30:00

我知道我可以像下面这样对其进行硬编码(包含所有条目,但必须有一种干净的方式,我可以只给出间隔。

times=[pd.to_datetime(i).time() for i in '10:15:00','10:15:05','10:15:10','10:15:15','10:15:20','15:25:00','15:30:00']

我试过了

datetime_range(datetime.time(09,15,00), datetime.time(15,30,00),  timedelta(minutes=5))

但这给了SyntaxError: invalid token

【问题讨论】:

  • datetime.time(09,15,00) 必须是 datetime.time(9,15,00)。 Python 解释 09 是试图定义一个八进制数(八进制数以 0 开头),但 9 不是八进制数。
  • 我试过datetime_range(datetime.time(9,15,00), datetime.time(15,30,00), timedelta(minutes=15)),但它说descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
  • @DYZ 这是 Python 3 特有的功能,请参阅stackoverflow.com/questions/13013638/… 2 八进制数字,但在 Python 3 中 02 仍然会引发“无效令牌”。跨度>
  • 什么是datetime_range()

标签: python timestamp range date-range python-datetime


【解决方案1】:

这个怎么样?

times = [(datetime.datetime(2017, 7, 17, 9, 10, 0) + datetime.timedelta(minutes=5*x)).time() for x in range(5)]

它有点长,但它都适合一行,就像你想要做的那样。当然你可以通过导入你需要的函数而不是整个模块来解决这个问题。

【讨论】:

  • 是的,这就是我想要的。但是由于我正在将其写入脚本,因此我无法以这种形式(“硬编码”)给出日期。
  • 我不明白。您的代码中的示例向您展示了以这种方式格式化它。不管它是什么,您都应该能够将其转换为日期时间对象,然后继续上面的列表理解。
  • 我的意思是,包括 2017,07,17(日期)在内的脚本看起来不太好。虽然它没有任何区别,因为我们只使用了time() 的一部分。
  • 我正在尝试做datetime.time(10, 15) + datetime.timedelta(minutes=5) 但得到TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta' 你能告诉我这有什么问题吗
  • 抱歉,刚醒。问题是您不能将 time 对象与 timedelta 一起使用,这就是为什么您需要将 time 转换为 datetime 的原因,这可以通过多种方式完成,但谷歌会更容易问题。
【解决方案2】:

什么是生成时间戳系列的好方法,间隔为 5 分钟,开始时间为 09:10:00,结束时间为 15:30:00

一个简单的循环就可以解决问题:

from datetime import datetime, time, timedelta

times = []
ts = datetime(2017, 7, 17, 9, 10, 0)
while ts <= datetime(2017, 7, 17, 15, 30, 0):
    times.append(time(ts.hour, ts.minute, ts.second))
    ts += timedelta(minutes=5)

首先使用 datetime 对象的原因是它们支持 timedelta 对象,这可以让您的问题得到解决。从那里,很容易使用time(ts.hour, ts.minute, ts.second) 转换为 time 对象。

【讨论】:

  • 我不能输入日期,我只需要时间
  • 我有什么遗漏的吗?我得到TypeError: 'module' object is not callable,如果我这样做time(ts.hour, ts.second, ts.minute)
  • 您需要使用from datetime import datetime, time, timedelta导入相应的工具。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2020-12-17
  • 1970-01-01
相关资源
最近更新 更多