如何在Python 2.7中解析unicode月份名称以获取datetime

时间:2012-01-16 19:16:45

标签: python datetime

我有一个u'20січня2012'我需要获得datetime对象。 (u'20січня2012'== u'20 2012年1月')

当你有一个datetime.strptime('2005年6月1日','%d%b%Y')这很容易但是如果我在不同的语言环境中有月份该怎么办?

(appengine + python 2.7)

最好有一个方法get_month(u'Month name in different forms',Language.RUS) - > int:'月数' 因此,图书馆可以处理不同形式的月份名称。 例如,'1Июнь'和'1Июня'应该是相同的日期。 我正在使用它来抓取网站和解析日期。

2 个答案:

答案 0 :(得分:8)

也许你可以先将它转换为日期时间对象,然后使用locale设置另一个语言环境并再次转换它。

这是让你开始的东西..

import locale, datetime

In [1]: datetime.datetime.strptime('February', '%B')
Out[1]: datetime.datetime(1900, 2, 1, 0, 0)

In [2]: locale.setlocale(locale.LC_ALL, 'de_DE')
Out[2]: 'de_DE'

In [3]: datetime.date(2008, 2, 1).strftime('%B')
Out[3]: 'Februar'

In [4]: datetime.datetime.strptime('Februar', '%B')
Out[4]: datetime.datetime(1900, 2, 1, 0, 0)

答案 1 :(得分:1)

使用python_dateutil parse方法并为给定语言实现parserinfo类有一个很好的解决方案。

http://blog.elsdoerfer.name/2009/12/12/django-flexible-date-form-fields-accepting-almost-any-input/