python - 根据语言环境,日期格式不正确
问题描述
我需要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
那么缺失的部分是什么
解决方案
语言环境文档中对此进行了解释:
根据 POSIX,未调用 setlocale(LC_ALL, '') 的程序使用可移植的“C”语言环境运行。调用 setlocale(LC_ALL, '') 让它使用 LANG 变量定义的默认语言环境。
因此,如果您什么都不做,您将获得基本的'C'
语言环境。
如果您调用setlocale(LC_ALL, '')
,程序将切换到由环境确定的默认语言环境。如果您想知道它是哪一种,请使用getdefaultlocale
.
第三个选项是明确设置语言环境。
推荐阅读
- python - gnupg python解密和加密使用内存而不是磁盘空间
- javascript - 我怎样才能取值在 *ngfor?
- arrays - 选择最多时间时如何重新排列集合视图单元格
- asp.net - 如何从任何类型的数据库(pdf、xlx、jp 或 png)中检索文件并使其可在网页上下载?
- php - CORS 策略已阻止访问 XMLHttpRequest - Laravel 5.8
- haskell - 我得到错误:非常简单的 Haskell 代码的变量不在范围内
- javascript - 必填字段检查无法正常工作
- c - 是否可以在 C99 (gcc/clang) 中使用 __asm 作为 lambda 表达式
- javascript - Javascript - 乘以 100 后特定数字的奇怪小数
- event-handling - 如何使用 asyncio 管理任务的动态列表