获取两个日期之间的月份列表

时间:2016-05-26 09:11:42

标签: python datetime calendar

我需要实现代码,这将帮助我获取两个日期之间的月份列表。

我已经有了代码,它将给出月份增量,即月数。

实际上,我需要一种方法来获得两个日期之间的月份列表。

这是获得月份增量的代码。

import calendar
import datetime

def calculate_monthdelta(date1, date2):
    def is_last_day_of_the_month(date):
        days_in_month = calendar.monthrange(date.year, date.month)[1]
        return date.day == days_in_month
    imaginary_day_2 = 31 if is_last_day_of_the_month(date2) else date2.day
    monthdelta = (
        (date2.month - date1.month) +
        (date2.year - date1.year) * 12 +
        (-1 if date1.day > imaginary_day_2 else 0)
        )
    print monthdelta
    return monthdelta

date2 = datetime.datetime.today()
date1 = date2.replace(month=01)

calculate_monthdelta(date1, date2)

现在我需要一种方法来获取相同的月份列表。

感谢任何帮助如果有任何方法可以获得两个日期之间的月份列表。

注意:除了我在这里使用的代码外,请提出任何想法(如果有的话)。

4 个答案:

答案 0 :(得分:11)

试试这个

The specified value "2525-0505-16161616 0606:0505" does not conform to the required format.  The format is "yyyy-MM-ddThh:mm" followed by optional ":ss" or ":ss.SSS"

答案 1 :(得分:0)

from datetime import datetime,timedelta
import time
d = date1
delta = timedelta(months=1)
while d <= date2:
    print d.strftime("%m")
    d += delta

答案 2 :(得分:-1)

将您的打印声明更改为:
print calendar.month_name[:monthdelta]

答案 3 :(得分:-1)

因为我不知道你想要的输出我不能格式化我的,但这会返回两个日期之间的总月数的整数。

def calculate_monthdelta(date1, date2):
    print abs(date1.year - date2.year) * 12 + abs(date1.month - date2.month)