Python获取指定日期是“星期几”的6种方法

顾言
顾言
发布时间:2026-10-12 | 4人浏览过
原创

本文详细演示了在Python中获取指定日期对应星期几的6种常用方法,涵盖内置的datetime与calendar模块、第三方库pendulum以及数据分析工具pandas。通过返回数值索引、中英文字符串及批量列计算,帮助开发者快速解决日期分组汇总与周期分析中的格式化问题。

日期处理场景与核心需求

在数据分析与业务统计中,经常需要按照时间周期对数据进行分组汇总,例如提取销量走势、用户活跃度分布等规律。完成分类前,首要步骤是将原始日期字符串转换为明确的“星期几”。以2022年2月22日为例,本文将依次展示基于Python内置库、第三方库及数据框架的6种实现方式。

日期与时间周期处理示意图
明确目标日期对应的星期数即可支撑后续的周期性统计

基于内置 datetime 模块的方法

datetime 是Python标准库的一部分,无需额外安装即可直接调用。它提供了丰富的对象类型用于表示日期与时间,并支持灵活的格式转换。

第1步:使用 weekday() 获取数字索引并映射中文

weekday() 方法按ISO标准返回一个整数,范围是0到6,其中0代表星期一,6代表星期日。

from datetime import date
date(2022, 2, 22).weekday()
# 输出结果:1(对应星期二)

若需符合日常阅读习惯显示中文,可预先定义索引列表并通过位置取值:

week_list = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]
result = week_list[date(2022, 2, 22).weekday()]
print(result)
# 输出结果:'星期二'

第2步:使用 isoweekday() 获取1~7的标准编号

该方法的逻辑与前者一致,区别在于返回值区间调整为1到7,直接匹配国内“星期一到星期日”的习惯,无需额外减一操作。

import datetime
datetime.date(2022, 2, 22).isoweekday()
# 输出结果:2

第3步:使用 strftime() 导出英文周名

strftime() 可将日期对象序列化为指定格式的字符串。使用指令 %A 可直接获取完整的英文名称,替换为 %a 则返回缩写形式。

import datetime
datetime.date(2022, 2, 22).strftime("%A")
# 输出结果:'Tuesday'
datetime.date(2022, 2, 22).strftime("%a")
# 输出结果:'Tue'

第4步:借助 calendar 模块快速查询

calendar 作为内置日历管理模块,同样提供 weekday() 函数进行数值计算,其参数顺序为(年, 月, 日)。

import calendar
calendar.weekday(2022, 2, 22)
# 输出结果:1

配合 calendar.day_name 数组,还能直接拼接出英文周名:

import datetime, calendar
date_obj = datetime.date(2022, 2, 22)
weekday_idx = date_obj.weekday()
calendar.day_name[weekday_idx]
# 输出结果:'Tuesday'

引入第三方库 pendulum 扩展功能

当项目涉及复杂的时区转换或相对日期运算时,推荐引入 pendulum 这一优秀的第三方时间处理库。使用前需执行 pip install pendulum 完成依赖安装。

import pendulum
parsed_date = pendulum.parse('2022-02-22')
parsed_date.day_of_week
# 输出结果:2

该方法返回1~7的数值,直观表达当天是星期的第几天,且在处理跨时区任务时表现更稳定。

Pandas 数据处理中的批量计算方案

在实际的数据分析工作流中,单日验证往往无法满足需求。利用 pandas 的 .dt 访问器,可以高效地对整列日期数据进行向量化转换,自动扩充为新字段。

首先构建包含多行日期记录的DataFrame:

import pandas as pd
from datetime import datetime

df = pd.DataFrame({
    "name": ["张三", "李四", "朱五"],
    "date": [datetime(2022, 2, 21), datetime(2022, 2, 22), datetime(2022, 2, 23)]})
print(df)
初始Pandas DataFrame表格视图
包含姓名与原始日期数据的初始表格结构

随后通过链式方法生成星期序号与星期名称列:

df["week_num1"] = df["date"].dt.dayofweek
df["week_num2"] = df["date"].dt.weekday
df["week_name"] = df["date"].dt.day_name()
print(df)
Pandas增加星期列后的结果表格
新增 weekday 数值列与 day_name 英文周名列的完整输出

排错提示与最佳实践

  • 类型匹配警告: 确保传入 date() 或 Series.dt 的对象已正确解析为日期类型。若原始数据为字符串,需先使用 pd.to_datetime() 转换,否则会触发 TypeError。
  • 时区与夏令时: 标准库 datetime 默认处于无时区状态。若业务强依赖地理时区,请优先选用 pendulum 或 pytz 进行显式声明。
  • 性能差异: 单机脚本运行任意方法耗时均在毫秒级;但若涉及百万级以上记录,务必采用 pandas 向量化方案,避免使用原生循环逐行判断。

总结

根据实际开发环境的不同,开发者可选择最契合的实现路径:纯环境依赖下推荐使用 datetime 模块搭配列表映射或 strftime 指令;面向企业级报表引擎时,pandas 的向量化工具能显著降低代码复杂度;而涉及跨国系统对接时,pendulum 提供的增强型时间API将大幅简化底层逻辑维护。

以上就是Python获取指定日期是“星期几”的详细内容,更多关于Python日期处理与时间分析的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表