You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3:如何从指定格式日期中提取星期几

嘿,这个需求其实挺容易解决的,两种日期格式里的星期信息要么在字符串开头,要么藏在括号里,咱们可以用两种思路来提取——正则匹配(跨语言通用)或者用日期库解析(更稳妥),我给你具体讲讲:

方法一:正则表达式匹配(跨语言通用)

两种格式里的星期都是3个字母的缩写(比如Thu),我们可以写一个能覆盖两种情况的正则:

匹配模式:^([A-Za-z]{3})|\(([A-Za-z]{3})

  • 前半部分^([A-Za-z]{3})匹配字符串开头的3个字母(对应第二种格式的开头星期)
  • 后半部分\(([A-Za-z]{3})匹配括号内的3个字母(对应第一种格式括号里的星期)

拿Python举个例子:

import re

# 测试两种格式的日期
date1 = "2007-10-18 11:31:46 -0400 (Thu, 18 Oct 2007)"
date2 = "Thu, 18 Oct 2007 11:31:49 -0400"

pattern = r'^([A-Za-z]{3})|\(([A-Za-z]{3})'

# 提取第一个日期的星期
match_result = re.search(pattern, date1)
weekday = match_result.group(2) if match_result.group(2) else match_result.group(1)
print(weekday)  # 输出: Thu

# 提取第二个日期的星期
match_result = re.search(pattern, date2)
weekday = match_result.group(2) if match_result.group(2) else match_result.group(1)
print(weekday)  # 输出: Thu

方法二:日期解析库(以Python为例,更稳妥)

如果用Python的话,借助datetime模块解析日期字符串后,能直接提取星期的缩写或全名,还能避免正则可能出现的匹配错误:

from datetime import datetime

# 处理第一种格式
date_str1 = "2007-10-18 11:31:46 -0400 (Thu, 18 Oct 2007)"
# 我们可以只解析括号外的日期部分
dt1 = datetime.strptime(date_str1.split('(')[0].strip(), "%Y-%m-%d %H:%M:%S %z")
print(dt1.strftime("%a"))  # 输出: Thu(3字母缩写)
print(dt1.strftime("%A"))  # 输出: Thursday(完整星期名)

# 处理第二种格式
date_str2 = "Thu, 18 Oct 2007 11:31:49 -0400"
dt2 = datetime.strptime(date_str2, "%a, %d %b %Y %H:%M:%S %z")
print(dt2.strftime("%a"))  # 输出: Thu
print(dt2.strftime("%A"))  # 输出: Thursday

这里的%a是日期格式化符号,表示星期的3字母缩写,%A则表示完整的星期名称,非常灵活。

如果是其他语言(比如JavaScript、Java),也有对应的日期解析API,核心思路都是先把字符串转成日期对象,再提取星期信息就行啦~

内容的提问来源于stack exchange,提问作者Aiguo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:28:58