如何从Monday_09_25格式中提取纯datetime并移除星期部分
从类似Monday_09_25的格式中提取并转换为Datetime
嘿,这个问题其实很容易解决,咱们分两步来:先把前面的星期部分剥离,再把剩下的日期字符串转成datetime对象。下面给你具体的实现方案,以Python为例(毕竟这是处理日期最常用的语言之一):
步骤1:剥离星期部分
这类字符串的结构是「星期_月份_日期」,星期和后面的日期用下划线_分隔,所以直接分割字符串取后面的部分就好:
date_str = "Monday_09_25" # 分割后得到列表 ['Monday', '09', '25'],取索引1及之后的元素拼接 clean_date_part = "_".join(date_str.split("_")[1:]) # 结果就是干净的 '09_25'
步骤2:转换为Datetime对象
要注意,datetime模块需要完整的年-月-日信息,所以这里分两种情况处理:
情况1:使用当前年份
如果没有指定年份,直接用当前年份来补全:
from datetime import datetime import time current_year = time.localtime().tm_year # 拼接年份和干净的月日字符串,按指定格式解析 datetime_obj = datetime.strptime(f"{current_year}_{clean_date_part}", "%Y_%m_%d") print(datetime_obj) # 示例输出:2024-09-25 00:00:00
情况2:指定自定义年份
如果需要固定某一年,直接替换掉上面的current_year就行:
target_year = 2023 datetime_obj = datetime.strptime(f"{target_year}_{clean_date_part}", "%Y_%m_%d")
更省心的一步到位写法
其实还有更简洁的方式,直接让strptime匹配整个字符串,然后替换年份就好:
from datetime import datetime date_str = "Monday_09_25" # %A 用来匹配完整的英文星期名称(比如Monday) datetime_obj = datetime.strptime(date_str, "%A_%m_%d").replace(year=2024)
小贴士:这个方法依赖系统的本地化设置,如果你的星期是其他语言(比如中文「星期一」),得先调整本地化配置,否则会解析失败。但如果是英文星期名,这招绝对省心。
额外:JavaScript实现示例
如果用JS处理,思路类似:
const dateStr = "Monday_09_25"; const [_, month, day] = dateStr.split("_"); const currentYear = new Date().getFullYear(); // 注意JS的月份是从0开始的,所以要减1 const dateObj = new Date(currentYear, parseInt(month) - 1, parseInt(day));
内容的提问来源于stack exchange,提问作者R.Williams
相关产品推荐
相关产品推荐

