如果今天是今天,如何打破真正的循环

时间:2018-03-26 08:55:59

标签: python-2.7 datetime while-loop

我有一个用于导出一些原始数据的python脚本。我的目标是将历史数据导出到今天。这是一段代码:

delta = 0
while True:
    from_date = datetime.datetime.strptime('2018-03-25', '%Y-%m-%d') + datetime.timedelta(days=delta)
    data_date = from_date.strftime('%Y-%m-%d')
    if from_date == datetime.date.today():
        break
    delta += 1

我遇到的问题是,今天的循环并没有中断。知道怎么解决吗?或者使用类似方法获取数据的任何其他方式?

2 个答案:

答案 0 :(得分:1)

您的中断条件永远不会成为现实,因为您将日期时间对象与日期对象进行比较。

使用date()方法从datetime获取日期

if from_date.date() == datetime.date.today():
    break

答案 1 :(得分:0)

您还可以将from_date的定义更改为date对象并且它会起作用,但这需要数字而不是string

delta = 0
while True:
    from_date = datetime.date(2018,3,25) + datetime.timedelta(days=delta)
    data_date = from_date.strftime('%Y-%m-%d')
    if from_date == datetime.date.today():
        break
    delta += 1

使用此功能,您还可以将data_date定义更改为:

data_date = str(from_date)