日历模块中全年的矩阵

use*_*661 0 python calendar

我想使用Python的calendar模块生成一个给定年份中每个星期一和星期六的yyyy-mm-dd格式的日期列表(或者如果它更合适,则为其他东西,但我不希望引入外面的图书馆).

但是,为您提供全年数据的功能就像calendar.calendar()输出字符串格式的日历一样,不用说,这将是不合理的繁琐工作.

我想要的是calendar.monthcalendar,它返回一个矩阵,每个列表有7个条目,每个矩阵代表一周中有序的一天.然而,这对我周一和周六的问题来说也很麻烦,因为有些周会持续2个月(即月末和月初).

我想我可以制定一个尴尬的黑客来解决这个问题,但我希望有一个更好的方法我可以忽略它.

DSM*_*DSM 5

IIUC,你可以简单地使用datetime:

>>> year = 2013
>>> days = [datetime.datetime(year, 1, 1) + datetime.timedelta(days=i) for i in range(366)]
>>> days = [day for day in days if day.year == year and day.weekday() in (0, 5)]
>>> formatted = [day.strftime("%Y-%m-%d") for day in days]
>>> len(formatted)
104
>>> formatted[:10]
['2013-01-05', '2013-01-07', '2013-01-12', '2013-01-14', '2013-01-19', '2013-01-21', '2013-01-26', '2013-01-28', '2013-02-02', '2013-02-04']
Run Code Online (Sandbox Code Playgroud)