Datetime
数据库中要有一列来记录查询的时间:
- 查城市时,如果是5分钟之内的检索,则直接调用数据库中已有的结果
- 调出历史记录使用
要解决的问题
- API返回的事Str,要转成日期/时间格式
- 两个日期/时间之间的间隔怎么衡量
字符串转date object
d = '2017-02-17T00:05:00+08:00' # thinkpage returned last_update result
dt = datetime.strptime(d, "%Y-%m-%dT%M:%S+%M:%S")
报错redefinition of group name 'M' as group 6; was group 4 at position 133
查到了一个解决dateutil
库,可以直接对字符串转化成date object
from dateutil import parser
d = parse(d)
在我的Jupyter中可以用;但是在python3中却无法安装;不是太想在这个里面花太多时间,还是想用自带的strptime
方法解决问题。
参考了@Tern同学的代码,发现自己翻了个愚蠢的错误,误将小时:分钟解析成分钟:秒;另外只需要前16位即可,不需要后面的
dt = datetime.strptime(d[0:16], "%Y-%m-%dT%H:%M")
意识到一个问题,心知返回的时间是
last_update
,而不是当时搜索的时间,所以比较应该用的是搜索时的系统时间
使用datetime.now()
并以datetime
格式存进sqlite,查询时返回的是字符串'2017-02-19 23:08:14.326447'
d2 = '2017-02-19 23:08:14.326447'
dt2 = datetime.strptime(d2, "%Y-%m-%d %H:%M:%S.%f")
时间间隔计算
from datetime import timedelta
interval = timedelta(minutes=5)
current_time = datetime.now()
用目前的时间和数据库中记录的时间差和interval
做比较,如果<=interval
直击返回数据库中的结果
运行中报错
module 'datetime' has no attribute 'now'
change to import datetime import datetime
问题 作业中偷懒只解析了前16位,但后面的其实是有价值的信息(时区);需要把这块补充上。
Change Log
2017.02.19 Initial draft