![date 命令似乎忽略了区域设置](https://linux22.com/image/987011/date%20%E5%91%BD%E4%BB%A4%E4%BC%BC%E4%B9%8E%E5%BF%BD%E7%95%A5%E4%BA%86%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE.png)
我想要做的是将区域设置环境变量(LC_TIME
我认为)设置为能够date
以良好的 ISO 格式输出的内容。
通过查看其他 Stack Exchange 问题和答案,例如这个,看来我走在正确的轨道上,并且使用语言en_DK
环境应该可以实现我想要的效果。
但LC_TIME=en_DK date
仍然给我与以前相同的日期格式。我还尝试设置LANG
和LC_ALL
,并将它们设置为en_DK.UTF-8
,但它们没有任何效果。为了进行健全性检查,我尝试将所有这些设置为ru_RU
或,ru_RU.UTF-8
因为这些会产生更明显的效果,但仍然没有变化。
我发现有一个名为 的包language-pack-ru
,并安装了它,还运行了sudo update-locale
和sudo dpkg-reconfigure locales
,但仍然没有变化。我没有找到language-pack-dk
。我的/usr/share/i18n/SUPPORTED
文件有en_DK.UTF-8 UTF-8
、en_DK.ISO-8859-15 ISO-8859-15
、en_DK ISO-8859-1
,所以据我所知,我应该设置。
我错过了什么?
答案1
看起来date
没有参数的命令输出的是语言环境的“date_fmt”,但在 en_DK 语言环境中,它不是 ISO 8601 格式。您可以通过添加 FORMAT 参数来获得所需的输出 - 类似于:
LC_TIME=en_DK.UTF-8 date +'%x %X'
请参见授权用于进一步的 FORMAT 序列。
答案2
对于 ISO 格式的日期,date
还有一个-I
选项:
-I[FMT], --iso-8601[=FMT] output date/time in ISO 8601 format. FMT='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the indicated precision.
精度可以缩写为:-Ih
而不是-Ihours
等。
$ date -I
2021-04-04
$ date -Ih
2021-04-04T17+02:00
$ date -Im
2021-04-04T17:37+02:00
$ date -Is
2021-04-04T17:37:34+02:00