Python while 循环日期迭代

标签 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

最佳答案

使用箭头中的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/

相关文章:

python - 获取 "Unknown String Error"

java - while(true) 和集合

java - 循环不执行内部if语句

python - Pip 不会在 virtualenv 中安装包

python - 全局变量在模块级别未定义

python - 连接 RHCP 的名称、仪器和生日

javascript - 访问数组中正确的元素

c - 我的质数检查器功能无法正常工作

arrays - 使用数组在 VBA 中创建动态循环

c - 为什么我的 while 循环被激活,但没有其他 react ?