我正在使用Calendar和monthdatescalendar()

import Calendar

mycal = calendar.Calendar(0)
laborday = mycal.monthdatescalendar(2003, 9)[0][0]


正确返回2003年9月1日

laborday = mycal.monthdatescalendar(2004, 9)[0][0]


返回2014/30/2014,这不是期望的结果

什么是正确获取每月第一天(任何月份/年份)而不获取上个月的最后一天的正确方法,因为您正确地获得了第一周?

最佳答案

问题是monthdatescalendar返回整周,因此如果需要填补第一周,则将包括前几个月。

为了获得正确的日期,您需要对照第一个星期一datetime对象的月份进行检查,并根据需要选择下一个星期一。

import calendar

def getLaborDay(year):
    month = 9
    mycal = calendar.Calendar(0)
    cal = mycal.monthdatescalendar(year, month)
    if cal[0][0].month == month:
        return cal[0][0]
    else:
        return cal[1][0]

print getLaborDay(2003)
print getLaborDay(2004)


Gives:

2003-09-01
2004-09-06

关于python - 使用Calendar.monthdatescalendar()和劳动节,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24622887/

10-08 21:43