日期解析器包是一个很棒的包:https://dateparser.readthedocs.io/en/latest/
要成为通用的:我需要能够解析“印度”日期格式的日期。
我使用python2.7版本
准确地说:我得到-
>>> import dateparser
>>> dateparser.parse('Tue, 06/07/2016')
datetime.datetime(2016, 6, 7, 0, 0)我需要
>>> import dateparser
>>> dateparser.parse('Tue, 06/07/2016')
datetime.datetime(2016, 7, 6, 0, 0)如果您知道任何可以做到这一点的配置更改,那就太好了。任何帮助都将不胜感激。:)
发布于 2016-09-28 18:27:38
dateparser有settings来处理这样的场景。与指定date_formats不同,您还可以按以下方式使用DATE_ORDER设置。
In [3]: parse('Tue, 06/07/2016', settings={'DATE_ORDER': 'DMY'}) Out[3]: datetime.datetime(2016, 7, 6, 0, 0)
在这里找更多设置
发布于 2016-06-09 12:50:55
您可以使用datetime.strptime,而不是dateparser,因为它是python标准库的一部分:
In [13]:
import datetime as dt
dt.datetime.strptime('Tue, 06/07/2016', '%a, %d/%m/%Y')
Out[13]:
datetime.datetime(2016, 7, 6, 0, 0)好的,它看起来像是逗号使dateparser不舒服,如果您不把它传递到formats arg中,那么它可以工作:
In [30]:
import dateparser
dateparser.parse('Tue, 06/07/2016', date_formats=['%A %d/%m/%Y'])
Out[30]:
datetime.datetime(2016, 7, 6, 0, 0)发布于 2021-03-28 20:49:09
如果有人仍然面临这个问题,您可以查看一下dateparser.readthedocs.io/en/latest/settings.html文档Settings
正如user739721所指出的,您可以并且应该使用settings={'DATE_ORDER': 'DMY'}作为parse的关键字参数。如果您多次调用dateparser.parse(),并且将它添加到任何地方都是痛苦的,那么它可能会变得非常麻烦。为此,可以从python自己的partial中使用functools
import functools
import dateparser
parse = functools.partial(dateparser.parse, settings={'DATE_ORDER': 'DMY'})现在,任何对解析的调用都将使用“DMY”设置。
警告:如果最后传递要解析调用的设置时,会被覆盖。所以,有了上面的解析定义,
In [21]: parse('1 3 1970').strftime("%B")
Out[21]: 'March'
In [22]: parse('1 3 1970', settings={}).strftime("%B")
Out[22]: 'January'https://stackoverflow.com/questions/37726207
复制相似问题