如何在不在Python中设置程序范围的语言环境的情况下获取给定语言环境的正确日期格式字符串?

Und*_*ryx 6 python locale python-2.7

我正在尝试生成包含可以在特定区域设置中给出的日期的词典.例如,我可能希望我的函数在使用en_US作为参数调用时返回:

{'date': 'May 12, 2014', ...}
Run Code Online (Sandbox Code Playgroud)

这个,当用hu_HU调用时:

{'date': '2014. május 12.', ...}
Run Code Online (Sandbox Code Playgroud)

现在,根据我到目前为止发现的内容,我应该使用locale.setlocale()设置我想要使用的语言环境,并locale.nl_langinfo(locale.D_FMT)获得适当的日期格式.我可以locale.resetlocale()在此之后调用以返回之前使用的那个,但我的程序使用多个线程,并且我认为其他的也会受到这个临时区域设置更改的影响.

Jon*_*fer 5

有非标准的babel模块提供了这个和更多:

>>> import babel.dates
>>> babel.dates.format_datetime(locale='ru_RU')
'12 ??? 2014 ?., 8:24:08'
>>> babel.dates.format_datetime(locale='de_DE')
'12.05.2014 08:24:14'
>>> babel.dates.format_datetime(locale='en_GB')
'12 May 2014 08:24:16'
>>> from datetime import datetime, timedelta
>>> babel.dates.format_datetime(datetime(2014, 4, 1), locale='en_GB')
'1 Apr 2014 00:00:00'
>>> babel.dates.format_timedelta(datetime.now() - datetime(2014, 4, 1), 
                                 locale='en_GB')
'1 month'
Run Code Online (Sandbox Code Playgroud)