如何比较 python 中的 ISO-8601 日期
How to compare ISO-8601 dates in python
我有一个 ISO-8601 格式的日期
date="2018-03-13T17:22:20.065Z"
我想以 iso9621
格式查找当前 UTC
时间。
我找到了一些代码片段,例如 datetime.datetime.utcnow().isoformat()
这给了我们以下结果
2018-06-12T08:19:28.954375
我想知道提供的日期是否早于 30 天。
我试着按照这个所示解决它
import datetime
import dateutil.parser
insertion_date = dateutil.parser.parse('2018-03-13T17:22:20.065Z')
diffretiation=datetime.datetime.utcnow().isoformat() - insertion_date
print diffretiation
print insertion_date
if diffretiation.days>30:
print "The insertion date is older than 30 days"
else:
print "The insertion date is not older than 30 days"
我发现这里有如下错误
Traceback (most recent call last):
File "test2.py", line 5, in <module>
right_now_30_days_ago=datetime.datetime.utcnow().isoformat() - insertion_date
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'
如有帮助将不胜感激
您的 datetime.datetime.utcnow()
不识别时区,要使其识别,请使用 pytz
:
import datetime
import dateutil.parser
import pytz
insertion_date = dateutil.parser.parse('2018-03-13T17:22:20.065Z')
diffretiation = pytz.utc.localize(datetime.datetime.utcnow()) - insertion_date
print diffretiation
print insertion_date
if diffretiation.days>30:
print "The insertion date is older than 30 days"
else:
print "The insertion date is not older than 30 days"
#The insertion date is older than 30 days
P.S。 datetime.datetime.utcnow().isoformat()
returns 一个字符串,这就是你遇到的错误。
我有一个 ISO-8601 格式的日期
date="2018-03-13T17:22:20.065Z"
我想以 iso9621
格式查找当前 UTC
时间。
我找到了一些代码片段,例如 datetime.datetime.utcnow().isoformat()
这给了我们以下结果
2018-06-12T08:19:28.954375
我想知道提供的日期是否早于 30 天。
我试着按照这个所示解决它
import datetime
import dateutil.parser
insertion_date = dateutil.parser.parse('2018-03-13T17:22:20.065Z')
diffretiation=datetime.datetime.utcnow().isoformat() - insertion_date
print diffretiation
print insertion_date
if diffretiation.days>30:
print "The insertion date is older than 30 days"
else:
print "The insertion date is not older than 30 days"
我发现这里有如下错误
Traceback (most recent call last):
File "test2.py", line 5, in <module>
right_now_30_days_ago=datetime.datetime.utcnow().isoformat() - insertion_date
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'
如有帮助将不胜感激
您的 datetime.datetime.utcnow()
不识别时区,要使其识别,请使用 pytz
:
import datetime
import dateutil.parser
import pytz
insertion_date = dateutil.parser.parse('2018-03-13T17:22:20.065Z')
diffretiation = pytz.utc.localize(datetime.datetime.utcnow()) - insertion_date
print diffretiation
print insertion_date
if diffretiation.days>30:
print "The insertion date is older than 30 days"
else:
print "The insertion date is not older than 30 days"
#The insertion date is older than 30 days
P.S。 datetime.datetime.utcnow().isoformat()
returns 一个字符串,这就是你遇到的错误。