创建两个日期的循环 [英] Creating a loop for two dates

查看:147
本文介绍了创建两个日期的循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

通过Python中的一系列日期迭代

我有两个条目:

date1 = 2004.09.25
date2 = 2004.10.08

我想在Python中编写一个可识别日期范围并打印的脚本。如下所示:

I want to wrote a script in Python that recognizes the date range and print them. something like this:

for i in range(date1:date2):
    print i

我需要以日期的特定格式定义日期吗?
预期输出如下:

Do I need to define the dates in a particular format for dates? The expected output is like:

2004.09.25
2004.09.26
.
.
.
2004.10.08


推荐答案

你的第一步应该一直在看python datetime库。

Your first step should have been to look at the python datetime library.

总的来说,你的第一个解决方案可能是这样的:

Overall, your first solution could look something like this:

date1 = datetime.date(2004, 9, 25)
date2 = datetime.date(2004, 10, 8)
day = datetime.timedelta(days=1)

while date1 <= date2:
    print date1.strftime('%Y.%m.%d')
    date1 = date1 + day

(需要注意的是:这显然会使您的 date1 变量)

(one thing to note: this will obviously clobber your date1 variable)

我稍后会将其重构为daterange函数,以便您可以做更接近您所做的事情;在daterange(date1,date2)中,d将显示为

I would later refactor this into a daterange function so that you can do something closer to what you did; it would look like

for d in daterange(date1, date2):
    print d.strftime('%Y.%m.%d')

之后,当你开发你的python技能,它可以喜欢像这样:

Later on, when you develop your python skills, it could like like this:

for i in range((date2 - date1).days + 1):
    print (date1 + datetime.timedelta(days=i)).strftime('%Y.%m.%d')

或者这是我的最终版本:

Or this, which would be my final version:

def daterange(d1, d2):
    return (d1 + datetime.timedelta(days=i) for i in range((d2 - d1).days + 1))

for d in daterange(date1, date2):
    print d.strftime('%Y.%m.%d')

这篇关于创建两个日期的循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆