我是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")
这可能是因为“过去”的日期格式和我传递的日期值不同。
我该怎么想呢?
答案 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