从“今天”还是“昨天”到Python的时间,最好的方法是什么?
发布时间:2020-05-25 20:06:19 所属栏目:Python 来源:互联网
导读:Python具有相当不错的日期解析功能,但是通过今天创建一个新的日期并进行减法,是识别日期时间的唯一方法,例如“今天3:20 PM”或“昨天上午11:06” 我喜欢很多的图书馆,越来越多的人使用,是 python-dateutil,但不幸的是,它也不是其他传统的大日期时间解析器, mx
|
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) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
