从“今天”还是“昨天”到Python的时间,最好的方法是什么?
发布时间:2020-12-16 23:09:41 所属栏目:Python 来源:网络整理
导读:Python具有相当不错的日期解析功能,但是通过今天创建一个新的日期并进行减法,是识别日期时间的唯一方法,例如“今天3:20 PM”或“昨天上午11:06” 解决方法 我喜欢很多的图书馆,越来越多的人使用,是 python-dateutil,但不幸的是,它也不是其他传统的大日期时间
Python具有相当不错的日期解析功能,但是通过今天创建一个新的日期并进行减法,是识别日期时间的唯一方法,例如“今天3:20 PM”或“昨天上午11:06”
解决方法
我喜欢很多的图书馆,越来越多的人使用,是
python-dateutil,但不幸的是,它也不是其他传统的大日期时间解析器,mxDateTime from Egenix可以解析“明天”这个词,尽管图书馆有很强的“模糊“解析器.
我看到的唯一可以做到这一点的库是magicdate.例子: >>> import magicdate >>> magicdate.magicdate('today') datetime.date(2009,2,15) >>> magicdate.magicdate('tomorrow') datetime.date(2009,16) >>> magicdate.magicdate('yesterday') datetime.date(2009,14) 不幸的是,这只能返回datetime.date对象,所以不会包含时间部分,不能处理你的“今天下午3:20”的例子. 所以,你需要mxDateTime.例子: >>> import mx.DateTime >>> mx.DateTime.Parser.DateTimeFromString("Today 3:20 PM") <mx.DateTime.DateTime object for '2009-02-15 15:20:00.00' at 28faa28> >>> mx.DateTime.Parser.DateTimeFromString("Tomorrow 5:50 PM") <mx.DateTime.DateTime object for '2009-02-15 17:50:00.00' at 2a86088> 编辑:mxDateTime.Parser仅解析这些示例中的时间,忽略“今天”和“明天”.所以对于这种特殊情况,您需要使用magicdate的组合来获取日期和mxDateTime来获取时间.我的建议是使用python-dateutils或mxDateTime,只接受他们可以解析的字符串格式. 编辑2:正如注释中所示,python-dateutil现在可以处理模糊的解析.我还发现了开发用于Chandler的parsedatetime模块,它与此问题中的查询一起使用: >>> import parsedatetime.parsedatetime as pdt >>> import parsedatetime.parsedatetime_consts as pdc >>> c=pdc.Constants() >>> p=pdt.Calendar(c) >>> p.parse('Today 3:20 PM') ((2010,3,12,15,20,4,71,-1),3) >>> p.parse('Yesterday 11:06 AM') ((2010,11,6,70,3) 并且在这里参考是当前时间: >>> import datetime >>> datetime.datetime.now() datetime.datetime(2010,23,35,951652) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |