我需要 python 中的语言环境日期格式。由于您可以检查 %x 格式的 python datetime module link,该示例清楚地表明我的日期结果来自 None 语言环境。但是在下面的代码中,locale 被打印为 en_US。
import locale
from datetime import datetime
default_locale = locale.getdefaultlocale()[0]
print(default_locale) #en_US
date_val = "2021-12-20"
date1 = datetime.strptime(date_val, "%Y-%m-%d").date()
print(date1) #2021-12-20
print(date1.strftime("%x")) #12/20/21
# Expected 12/20/2021
我也尝试过 babel 但它产生了相同的结果:
from babel.dates import format_date
date_val = "2021-12-20"
default_locale = locale.getdefaultlocale()[0] #en_US
val_date = format_date(date_val, format='short', locale=default_locale)
print(val_date) #12/20/21
缺少的部分是什么
答案 0 :(得分:1)
在locale docs中有解释:
<块引用>根据 POSIX,一个程序没有调用 setlocale(LC_ALL, '') 使用可移植的 'C' 语言环境运行。调用 setlocale(LC_ALL, '') 让它使用 LANG 变量定义的默认语言环境。
因此,如果您什么都不做,您将获得基本的 'C'
语言环境。
如果您调用 setlocale(LC_ALL, '')
,程序将切换到由环境确定的默认语言环境。如果您想知道它是哪一个,请使用 getdefaultlocale
。
第三个选项是显式设置语言环境。
答案 1 :(得分:0)
正如你从上面的评论中看到的,@VPfB 提供的解决方案解决了这个问题,但另一个 当在 Windows 上设置区域设置时,区域设置值是 English_United States.1252 而不是 en_US
local.setlocale(locale.LC_ALL,"English_United States.1252")