【问题标题】:How do I convert a string into a format to compare it with another date? [duplicate]如何将字符串转换为格式以将其与另一个日期进行比较? [复制]
【发布时间】:2022-11-25 18:58:14
【问题描述】:

我使用正则表达式在字符串中查找这些日期

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] 转换为与当前日期进行比较的格式?

【问题讨论】:

  • 如果格式固定,strptime 可能有效(%d %B %Y 似乎是格式)。这会将字符串转换为日期时间,您可以从中获取 date() 并与引用进行比较。如果格式不固定,您可能需要使用 dateutil.parser 代替,因为它可以进行“模糊解析”(尝试多种方式)。
  • 除此之外,您应该了解 range 的工作原理以及它的功能,因为完全没有必要手动递增 index。此外,范围的结果不是随机的,如果您不关心该值(因为您只想要 n 次迭代),您会习惯使用 _ 例如for _ in range(n):
  • 最后 assert 不是一个函数,它是一个语句,将它写成一个函数是一个常见的错误原因,不要那样做。断言似乎也是这里工作的错误工具(捕获断言错误太笼统了),但不清楚调用者/周围代码应该是什么。
  • 好的,谢谢,我会调查所有这些

标签: python date


【解决方案1】:

您需要将该字符串转换为实际日期。如下代码:

datetime.strptime('10 October 2019', '%d %B %Y') > datetime.today()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2017-09-05
    • 2011-10-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多