首页 > 解决方案 > 根据语言环境,日期格式不正确

问题描述

我需要python中的语言环境日期格式。正如您可以检查 %x 格式的 python 日期时间模块链接,该示例清楚地表明我的日期结果来自无语言环境。但在下面的代码中,语言环境打印为 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

那么缺失的部分是什么

标签: pythondatelocale

解决方案


语言环境文档中对此进行了解释:

根据 POSIX,未调用 setlocale(LC_ALL, '') 的程序使用可移植的“C”语言环境运行。调用 setlocale(LC_ALL, '') 让它使用 LANG 变量定义的默认语言环境。

因此,如果您什么都不做,您将获得基本的'C'语言环境。

如果您调用setlocale(LC_ALL, ''),程序将切换到由环境确定的默认语言环境。如果您想知道它是哪一种,请使用getdefaultlocale.

第三个选项是明确设置语言环境。


推荐阅读