Python循环日期迭代

时间:2017-07-11 02:42:44

标签: python for-loop while-loop iteration

我目前有一个脚本,它会记录日期并从某个日期迭代到今天的日期。输出列出了当前日期之前的小时增量天数。

我试图弄清楚如何让循环停在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

1 个答案:

答案 0 :(得分:1)

使用箭头中的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包的实例。我使用箭头,除非绝对有必要使用内置。