我正在使用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 ***日(任何月/年)的正确方法是什么,而不是因为你正确地获得第一周而没有获得前一个月的最后一个***日?
答案 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)
2003-09-01
2004-09-06