我有两个yyyymm值,将由用户输入:
yyyymm_1 = '201406'
yyyymm_2 = '201501'
我希望能够以递增的月份顺序遍历此范围:
for yyyy and mm in the range of yyyymm_1 to yyyymm_2
my_function( yyyy, mm )
如何在python中完成?
更新:
理想情况下,解决方案应尽可能简单,而无需外部库。我不是在寻找通用的日期处理解决方案,而是在回答我上面提出的特定问题的解决方案。
在发布问题之前,我已经看到了许多通用的解决方案。但是,作为python noob,看不到如何使它们适应我的问题:
关于这一点,与此页面链接的其他问题更为通用。如果您希望生成一系列yyyymm值,请您在此页面上查看选定的答案。
这是另一个非常简单的变体,甚至没有使用datetime
。只需拆分日期,计算“总计月份”,然后进行迭代。
def to_month(yyyymm):
y, m = int(yyyymm[:4]), int(yyyymm[4:])
return y * 12 + m
def iter_months(start, end):
for month in range(to_month(start), to_month(end) + 1):
y, m = divmod(month-1, 12) # ugly fix to compensate
yield y, m + 1 # for 12 % 12 == 0
for y, m in iter_months('201406', '201501'):
print y, m
输出:
2014 6
2014 7
...
2014 12
2015 1
对于相同yyyymm
格式的输出,请使用print("%d%02d" % (y, m))
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句