TypeError:在“ datetime.datetime”和“ str”的实例之间不支持“>”

时间:2018-11-11 12:04:02

标签: python string datetime python-datetime

我是python日期和时间类型的新手。

我有一个日期值。

classpath 'com.google.gms:google-services:4.2.0'

我需要检查此日期值是否超过90天。

我尝试过:

date = '2018-11-10 10:55:31+00:00'

失败,出现以下错误:
from datetime import datetime from datetime import timedelta past = datetime.now() - timedelta(days=90) date = '2018-11-10 10:55:31+00:00' if past > date : print("This is older than 90 days")

这可能是因为“过去”的日期格式和我传递的日期值不同。

我该怎么想呢?

3 个答案:

答案 0 :(得分:1)

您必须使用strptime将字符串转换为日期。

比较运算符仅在日期时间之间适用。

date = datetime.strptime('2018-11-10 10:55:31', '%Y-%m-%d %H:%M:%S')

那你可以做

if past > date :
   print("This is older than 90 days")

答案 1 :(得分:1)

您可以使用dateutil包,只需将日期字符串date转换为`datetime对象,然后使用以下命令检查条件:

from dateutil import parser
past = datetime.now() - timedelta(days=90)
new_date = parser.parse("2018-11-10 10:55:31+00:00")
if past > new_date :
    print("This is older than 90 days")

那个:)

答案 2 :(得分:0)

您需要将日期字符串转换为datetime。您可以通过以下两种方式完成此操作。

使用内置的datetime.strptime

例如,在进行比较之前,先转换为datetime。这要求您精确地指定格式:

date = '2018-11-10 10:55:31+00:00'
date = datetime.strptime(date[:-6], '%Y-%m-%d %H:%M:%S')

print(date)

datetime.datetime(2018, 11, 10, 10, 55, 31)

使用第三方库

一种流行的工具是dateutil.parser,它可以解析最常见的日期时间格式 ,而无需事先指定格式:

from datetime import datetime, timedelta
from dateutil import parser

past = datetime.now() - timedelta(days=90)
date1 = '2018-11-10 10:55:31+00:00'
date2 = '2017-11-10 10:55:31+00:00'

for date in (date1, date2):
    if past > parser.parse(date[:-6]):
        print(f'This is older than 90 days: {date}')

This is older than 90 days: 2017-11-10 10:55:31+00:00