在python中处理国际日期

时间:2009-08-19 11:37:47

标签: python datetime internationalization

我的日期格式为德语,例如

2. Okt. 2009

也许也是

2. Oct. 2009

如何将其解析为ISO日期时间(或python datetime)?

使用此代码段解决:

for l in locale.locale_alias:
    worked = False
    try:
        locale.setlocale(locale.LC_TIME, l)
        worked = True
    except:
        worked = False
    if worked: print l

然后在setlocale中插入适当的参数l。

可以使用

进行解析
import datetime
print datetime.datetime.strptime("09. Okt. 2009", "%d. %b. %Y")

2 个答案:

答案 0 :(得分:10)

http://docs.python.org/library/locale.html

datetime模块已经可以识别语言环境。

它类似于以下

# German locale
loc= locale.setlocale(locale.LC_TIME,("de","de"))
try:
     date= datetime.date.strptime( input, "%d. %b. %Y" )
except:
     # English locale
     loc= locale.setlocale(locale.LC_TIME,("en","us"))
     date= datetime.date.strptime( input, "%d. %b. %Y" )

答案 1 :(得分:1)

关于你的代码片段的非常小的一点:我不是python专家,但我会考虑整个标志来检查成功+默默地吞下所有异常是不好的形式。

尝试/期待/否则以更干净的方式做你想做的事,我想:

for l in locale.locale_alias:
    try:
        locale.setlocale(locale.LC_TIME, l)
    except locale.Error: # the doc says setlocale should throw this on failure
        pass
    else:
        print l