dateparser包非常棒:https://dateparser.readthedocs.io/en/latest/
通用:我需要能够解析"印度"日期格式。
我使用的是python 2.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)
如果您知道任何可以执行此操作的配置更改,那就太棒了。 任何帮助将不胜感激。 :)
答案 0 :(得分:3)
您可以使用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)
答案 1 :(得分:1)
dateparser
有settings
来处理这样的情况。您也可以使用DATE_ORDER
设置,而不是指定date_formats。
In [3]: parse('Tue, 06/07/2016', settings={'DATE_ORDER': 'DMY'})
Out[3]: datetime.datetime(2016, 7, 6, 0, 0)
在这里查看more settings
答案 2 :(得分:0)
您可以使用date_formats参数:
dateparser.parse('Tue, 06/07/2016', date_formats=['%d %B %Y'])
date_formats链接https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
答案 3 :(得分:0)
如果有人仍然面临这个问题,您可以查看 Settings
文档 dateparser.readthedocs.io/en/latest/settings.html
正如 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'