如何进行一个考虑特定月份每一天的循环?

时间:2015-03-14 20:36:21

标签: python loops

有一个奇怪的,我无法弄清楚如何解决

基本上我必须运行一段代码,这段代码从文件中提取数据,其名称是格式year-month-day-hour-00-00-consensus

所以我要做的是完成一个循环,在代码运行后添加一个小时然后一旦它到达午夜增加一天等,但是当我有这个工作时,我无法弄清楚我怎么能这样做这几个月似乎很容易,因为所有月份都是30天,例如这很简单,我在定义月份的天数时遇到问题,是否有任何想法?

到目前为止这是代码:

def calculate_and_write_hsdir(h,d,m,y):

    if h < 24:

        if d < 10:
            d = "0"+str(d)
        if h < 10:
            h = "0"+str(h)
        if m < 10:
            m = "0"+str(m)

        consensus_file_name = str(y) + "-" + str(m) + "-" + str(d) + "-" + str(h) + "-00-00-consensus"
        print consensus_file_name 


..... do stuff ....

        h = int(h) + 1 
    else:
        h = 00
        d = int(d) + 1
            #   d = d + 1

我预设这个:

h = 00 #Hour
d = 01 #Day
m = 10 #Month
y = 2013 #Year

calculate_and_write_hsdir(h,d,m,y)

# def run_calculate(h,d,m,y):
#   if m == 02:
#       if d == 28:
#           calculate_and_write_hsdir(h,d,m,y)

我想在2013-10-01开始并在今天结束,我该如何实现这一目标?对不起,如果它有点令人困惑,但很难解释我想要实现的目标

1 个答案:

答案 0 :(得分:0)

Python有一个datetime模块,可以为您处理这个问题。您创建一个表示日期和时间的datetime对象,以及一个timedelta对象来表示添加1小时。如果需要,您可以通过比较.day对象的datetime属性来检查新日期是否与原始日期在同一天。

datetime还有一个方便的方法strftime,用于根据日期和时间打印格式化的输出。

from datetime import datetime, timedelta

def calculate_and_write_hsdir(h,d,m,y):
    before = datetime(hour = h, day = d, month = m, year = y)
    now = before + timedelta(hours = 1)
    if before.day == now.day:
        print 'still the same day'
        # ... do stuff ...
    else:
        print "now it's a different day"
        # ... do other stuff ... 
    print now.strftime('%Y-%m-%d-%H-00-00-consensus')    

h = 00 #Hour
d = 01 #Day
m = 10 #Month
y = 2013 #Year
calculate_and_write_hsdir(h, d, m, y)