如何获取指定年月中当月每一天的星期名称?
按年月输出当月每天的星期名称
问题分析
原代码报错是因为calendar.weekday()必须传入年、月、日三个参数,你只传了年和月,导致缺少必填的day参数。而且原代码仅尝试获取单天的星期,没有遍历当月所有日期,无法实现“输出当月每一天对应星期”的需求。
实现代码
1. 输出英文缩写(匹配预期格式)
import calendar year = 2021 month = 4 # 获取当月的总天数 _, num_days = calendar.monthrange(year, month) # 遍历每一天,获取星期缩写并收集 weekday_list = [] for day in range(1, num_days + 1): # weekday返回0=周一,6=周日,对应calendar.day_abbr的索引 weekday_idx = calendar.weekday(year, month, day) weekday_list.append(calendar.day_abbr[weekday_idx]) print(weekday_list)
运行结果:
['Mon','Tue','Wed','Thu','Fri','Sat','Sun','Mon','Tue','Wed','Thu','Fri','Sat','Sun','Mon','Tue','Wed','Thu','Fri','Sat','Sun','Mon','Tue','Wed','Thu','Fri','Sat','Sun','Mon','Tue']
2. 输出中文星期名称
如果需要中文结果,可以自定义星期对应列表:
import calendar year = 2021 month = 4 _, num_days = calendar.monthrange(year, month) # 中文星期对应,索引0=周一,6=周日 cn_weekdays = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] weekday_list = [] for day in range(1, num_days + 1): weekday_idx = calendar.weekday(year, month, day) weekday_list.append(cn_weekdays[weekday_idx]) print(weekday_list)
运行结果:
['周一','周二','周三','周四','周五','周六','周日','周一','周二','周三','周四','周五','周六','周日','周一','周二','周三','周四','周五','周六','周日','周一','周二','周三','周四','周五','周六','周日','周一','周二']
代码说明
calendar.monthrange(year, month):返回一个元组,第一个元素是当月第一天的星期索引(0=周一,6=周日),第二个元素是当月的总天数。calendar.weekday(year, month, day):返回指定日期的星期索引,配合calendar.day_abbr(英文缩写)或自定义中文列表,就能得到对应星期名称。- 循环遍历1到当月总天数,逐个获取每天的星期并收集到列表中,最终输出完整的当月星期序列。
内容的提问来源于stack exchange,提问作者Sagar Patil
相关产品推荐
相关产品推荐

