我目前有一个脚本,它接受一个日期并从某个日期迭代到今天的日期。输出以小时为增量列出了到当前日期为止的天数。
我正在尝试弄清楚如何让循环停止在 2017-07-10 00:00:000,或者换句话说,当前日期的开始,之后没有列出小时。注意:有人提到 while 循环只是在逻辑上有点困惑。
这是我使用的代码:
sys_date = dt.datetime.today()#.strftime("%d-%m-%Y %H:%M:%S")
Last_RT = Audit_Log.RUN_TIME_END.max()
#Looping through every hr until current date
for r in arrow.Arrow.range('hour', Last_RT, sys_date):
print r.format("YYYY-MM-DD HH:mm:ss")
输出:
- 2017-07-09 00:00:00
- 2017-07-09 01:00:00
- 2017-07-09 02:00:00
- 2017-07-09 03:00:00
- 2017-07-09 04:00:00
- 2017-07-09 05:00:00
....................
- 2017-07-09 15:00:00
- 2017-07-09 16:00:00
- 2017-07-09 17:00:00
- 2017-07-09 18:00:00
- 2017-07-09 19:00:00
- 2017-07-09 20:00:00
- 2017-07-09 21:00:00
- 2017-07-09 22:00:00
- 2017-07-09 23:00:00
- 2017-07-10 00:00:00
- 2017-07-10 01:00:00
- 2017-07-10 02:00:00
最佳答案
使用箭头中的floor方法
start = arrow.now().replace(days=-5).floor('day')
end = arrow.now().floor('day')
#Looping through every hr until current date
for r in arrow.Arrow.range('hour', start, end):
print r.format("YYYY-MM-DD HH:mm:ss")
这应该给你一天的开始。
2017-07-05 00:00:00
2017-07-05 01:00:00
2017-07-05 02:00:00
...
2017-07-09 21:00:00
2017-07-09 22:00:00
2017-07-09 23:00:00
2017-07-10 00:00:00
编辑
一般来说,我很少遇到同时需要 arrow
和内置 datetime
包的情况。我使用箭头,除非绝对有必要使用内置函数。
关于Python while 循环日期迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45024504/