【发布时间】:2018-11-27 03:33:54
【问题描述】:
问题来了:
使用 python 的 datetime 模块,创建一个迭代器,生成两个 datetime.datatime 对象之间的所有时间。
it = hourly_it( d1, d2) # 其中d1 和d2 是datetime.datetime 对象。
例如,
from datetime import datetime
it = hourly_it( datetime(2018, 10, 2, 12), datetime(2018, 10, 3, 12))
将生成 11 月 2 日 12:00(中午)到 11 月 3 日 12:00(中午)之间的所有日期时间。
这是我的代码:
from datetime import date, timedelta as td, datetime
def hourly_it( d1, d2) :
start = d1
finish = d2
def f():
nonlocal start, finish
if(start>=finish): return None
start += td(hours=1)
return start
return f
当我使用以下代码测试代码时:
from datetime import datetime
it = hourly_it( datetime(2018, 10, 2, 12), datetime(2018, 10, 3,12))
print(next(it))
我收到此错误:
TypeError Traceback(最近调用 最后)
在 () 1 从日期时间导入日期时间 2 it = hourly_it(datetime(2018, 10, 2, 12), datetime(2018, 10, 3, 12))
----> 3 打印(下一个(它))
TypeError: 'function' 对象不是迭代器
我想通了。谢谢大家。这是不使用生成器的方法。我还应该注意,我把+1小时放在return之前并设置了start >=
from datetime import date, timedelta as td, datetime
def hourly_it( d1, d2) :
start = d1
finish = d2
def f():
nonlocal start, finish
if(start>=finish): return None
start += td(hours=1)
return start
return iter(f,None)
【问题讨论】:
-
你的缩进不太对。你能清理一下你发布的代码吗?
-
你的缩进还是错
-
再次修复。谢谢。
-
如果两个日期相隔超过 24 小时会发生什么?小时数应该重置还是应该继续计算超过 25 小时?
-
我应该能够得到每小时的日期时间。例如,第 25 个日期戳是第二天的。