我使用 en_US 作为系统语言,但使用 pl_PL 作为日期格式。它在整个系统中工作正常,并且运行date
给我一个格式正确的日期。它还在 GUI 语言设置中将波兰语显示为时间格式。
但在任何浏览器(Chrome、Chromium、Firefox)中我都有美国格式!例如在日期输入中、JS 中的日期等......
console.log(new Date().toLocaleString())
// shows 9/26/2021, 3:29:46 PM
// should be 26.09.2021, 15:29:46
区域设置:
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=pl_PL.UTF-8
LC_TIME=pl_PL.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pl_PL.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_ADDRESS=pl_PL.UTF-8
LC_TELEPHONE=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_ALL=
要重现此用法:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_tolocalestring,或创建一个名为index.html
以下内容的文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
Hi!
<script>
console.log(new Date().toLocaleString())
</script>
</body>
</html>
然后使用LC_ALL
您想要尝试的任何值和浏览器组合打开此文件:
LC_ALL=el_GR.utf8 firefox index.html
然后,查看 javascript 控制台(通常通过按 即可使用F12),您将看到日期格式忽略了 LC 设置。
我在 Windows 机器上还有 en 表示语言和 pl 表示日期,并且工作正常。为什么 Linux 不能做到这一点?
我已经处理这个问题一年了。我在谷歌上找到的都是有类似问题但没有解决方案的人,或者系统中的日期格式有问题。
系统:Linux Mint 20 Xfce