Python 类型错误:'&燃气轮机';在';datetime.datetime';和';str';

Python 类型错误:'&燃气轮机';在';datetime.datetime';和';str';,python,string,datetime,python-datetime,Python,String,Datetime,Python Datetime,我不熟悉python日期和时间类型 我有一个日期值 date = '2018-11-10 10:55:31+00:00' 我需要检查此日期值是否早于90天 我试过: 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 : pr

我不熟悉python日期和时间类型

我有一个日期值

date = '2018-11-10 10:55:31+00:00'
我需要检查此日期值是否早于90天

我试过:

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")
失败,出现以下错误:
TypeError:'>'在'datetime.datetime'和'str'实例之间不受支持。

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


我怎么能想到这个呢?

你必须使用
strtime
将字符串转换成日期

Comparison运算符仅在datetime之间应用

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")

您可以使用
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")

它:)

您需要将日期字符串转换为
datetime
。你可以通过两种方式来做到这一点

使用内置的
datetime.strtime
例如,在比较之前,首先转换为
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)
使用第三方库 一种流行的工具是,它能够解析最常见的日期时间格式,而无需事先指定格式:

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