我正在使用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/