我的日期格式为德语,例如
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")
答案 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