如何在Python标准库中获取星期与月份名称列表?
获取星期和月份名称列表的优雅方案
不用手动定义列表或者逐个调用strftime(),Python标准库提供了更简洁的方式,分两种场景说明:
一、获取英文默认名称列表
直接使用calendar模块,它内置了现成的名称序列:
月份名称
- 完整名称:
calendar.month_name是一个从索引0(空字符串)到12的序列,取有效部分转成列表即可:import calendar full_months = list(calendar.month_name[1:]) # 结果:['January', 'February', ..., 'December'] - 缩写名称:用
calendar.month_abbr,同样取索引1到12:short_months = list(calendar.month_abbr[1:]) # 结果:['Jan', 'Feb', ..., 'Dec']
星期名称
- 完整名称:
calendar.day_name返回当前默认locale下的星期名称列表(默认英文,顺序为周一到周日):full_days = list(calendar.day_name) # 结果:['Monday', 'Tuesday', ..., 'Sunday'] - 缩写名称:用
calendar.day_abbr:short_days = list(calendar.day_abbr) # 结果:['Mon', 'Tue', ..., 'Sun']
二、获取本地化名称列表(如中文、法语等)
结合locale模块设置语言环境,再用calendar或locale模块获取对应语言的名称:
示例:获取中文名称
import locale import calendar # 注意:不同系统的locale写法有差异,Windows用'zh-CN',Linux/macOS用'zh_CN.UTF-8' locale.setlocale(locale.LC_TIME, 'zh_CN.UTF-8') # 中文完整月份列表 chinese_full_months = list(calendar.month_name[1:]) # 中文完整星期列表 chinese_full_days = list(calendar.day_name)
另一种方式:用locale.nl_langinfo
可以直接获取指定的本地化名称,适合更精细的控制:
import locale locale.setlocale(locale.LC_TIME, 'zh_CN.UTF-8') from locale import nl_langinfo # 中文月份(1-12月) chinese_months = [nl_langinfo(getattr(locale, f'MON_{i}')) for i in range(1, 13)] # 中文星期(周一到周日) chinese_days = [nl_langinfo(getattr(locale, f'DAY_{i}')) for i in range(1, 8)]
这些方法都是标准库原生支持,不用自己维护名称列表,也避免了循环调用strftime()的繁琐。
内容的提问来源于stack exchange,提问作者CraigF
相关产品推荐
相关产品推荐

