有一个奇怪的,我无法弄清楚如何解决
基本上我必须运行一段代码,这段代码从文件中提取数据,其名称是格式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开始并在今天结束,我该如何实现这一目标?对不起,如果它有点令人困惑,但很难解释我想要实现的目标
答案 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)