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

如何将提取的字符串日期转换为可与当前日期比较的格式?

问题描述

我用正则表达式从字符串中提取出以下日期:

matches = ['10 October 2019', '20 October 2019', '10 October 2019', '25 October 2019']

其中matches[0]和matches[2]是任务分配日期,matches[1]和matches[3]是任务截止日期。我需要检查任务是否逾期,即判断matches[1]和matches[3]是否早于当前日期。

我尝试了以下代码:

index = 0

for random_value in range(0, len(matches)/2):

    assert(matches[index]> date.today())
    index += 2

但出现错误:

TypeError: '>' not supported between instances of 'str' and 'datetime.date'

请问如何将matches[index]转换为可与当前日期比较的格式?

解决方法

要解决这个问题,你需要把字符串格式的日期转换为datetime.date对象,才能和date.today()进行比较。具体步骤如下:

  1. 导入所需模块:
from datetime import datetime, date
  1. 利用datetime.strptime()方法解析字符串日期。你的日期格式是"日 完整月份名 年",对应的格式字符串为"%d %B %Y":

    • %d:两位数字表示的日期(如10、20)
    • %B:完整的月份名称(如October)
    • %Y:四位数字表示的年份(如2019)
  2. 修改循环代码,修正索引并完成日期转换与比较:

# 截止日期从索引1开始,每次步长2
index = 1
# 用整数除法避免浮点数问题
for _ in range(len(matches) // 2):
    # 将字符串日期转换为date对象
    deadline = datetime.strptime(matches[index], "%d %B %Y").date()
    # 检查是否逾期(若截止日期早于当前日期则触发断言)
    assert deadline >= date.today(), "任务已逾期"
    index += 2

注意事项:

  • 原代码中初始索引设为0,实际检查的是任务分配日期而非截止日期,需改为1才能正确对应目标日期。
  • Python3中len(matches)/2会返回浮点数,使用//进行整数除法可避免range()函数报错。
  • 格式字符串必须与日期字符串的格式完全匹配,若月份是缩写(如Oct),需将%B替换为%b。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:40:33