使用 Calendar.monthdatescalendar() 与劳动节
我正在使用日历和monthdatescalendar()这个功能。
import Calendar
mycal = calendar.Calendar(0)
laborday = mycal.monthdatescalendar(2003, 9)[0][0]
它正确地返回了09/01/2003。
laborday = mycal.monthdatescalendar(2004, 9)[0][0]
但是返回了08/30/2014,这不是我想要的结果。
那么,怎样才能正确地获取每个月的第一天(无论是哪个月/年份),而不是得到上一个月的最后一天呢?因为我获取的第一周是正确的。
1 个回答
2
这个问题是因为 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