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

如何将文件名中的特殊日期时间格式转为datetime对象用于对比?

文件名日期时间转换与时间区间判断方案

步骤1:提取文件名中的日期时间片段

先从文件名里剥离出纯日期时间字符串,比如处理2024-01-30_17h00min05s237ms.jpg时,只需要去掉后缀.jpg,得到2024-01-30_17h00min05s237ms。

步骤2:将字符串解析为datetime对象

用Python的datetime.strptime方法,配合对应格式字符串就能完成解析:

  • %Y-%m-%d 匹配年-月-日部分
  • _%Hh 匹配小时后的h标记
  • %Mmin 匹配分钟后的min标记
  • %Ss 匹配秒后的s标记
  • %fms 匹配毫秒后的ms标记(%f会自动把毫秒转为微秒,不影响后续计算)

代码示例:

from datetime import datetime, timedelta

filename = "2024-01-30_17h00min05s237ms.jpg"
# 提取日期时间部分
dt_str = filename.split('.')[0]
# 解析为datetime对象
file_datetime = datetime.strptime(dt_str, "%Y-%m-%d_%Hh%Mmin%Ss%fms")

步骤3:解析目标日期时间

对于类似1/15/24 3:50 PM的格式,用%m/%d/%y %I:%M %p作为格式字符串解析:

target_time_str = "1/15/24 3:50 PM"
target_datetime = datetime.strptime(target_time_str, "%m/%d/%y %I:%M %p")

步骤4:判断是否在20分钟区间内

计算文件名时间加20分钟的结束时间,直接对比目标时间是否落在[文件名时间, 文件名时间+20分钟]区间内:

end_time = file_datetime + timedelta(minutes=20)
is_in_range = file_datetime <= target_datetime <= end_time

完整可运行代码

from datetime import datetime, timedelta

def is_time_in_20min_window(filename, target_time_str):
    # 解析文件名中的时间
    dt_str = filename.split('.')[0]
    file_dt = datetime.strptime(dt_str, "%Y-%m-%d_%Hh%Mmin%Ss%fms")
    # 解析目标时间
    target_dt = datetime.strptime(target_time_str, "%m/%d/%y %I:%M %p")
    # 计算区间结束时间
    end_dt = file_dt + timedelta(minutes=20)
    # 返回判断结果
    return file_dt <= target_dt <= end_dt

# 测试示例
test_filename = "2024-01-30_17h00min05s237ms.jpg"
test_target_in_range = "1/30/24 5:10 PM"  # 在17:00-17:20区间内
test_target_out_range = "1/30/24 5:25 PM" # 超出区间

print(is_time_in_20min_window(test_filename, test_target_in_range))  # 输出True
print(is_time_in_20min_window(test_filename, test_target_out_range)) # 输出False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:42:13