使用Calendar.monthdatescalendar()&劳动节

时间:2014-07-08 02:44:02

标签: python calendar python-datetime

我正在使用Calendar和monthdatescalendar()

import Calendar

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

正确返回09/01/2003

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

返回2014年8月30日,所需的结果

正确获取本月FIRST ***日(任何月/年)的正确方法是什么,而不是因为你正确地获得第一周而没有获得前一个月的最后一个***日?

1 个答案:

答案 0 :(得分:1)

问题是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