date 命令似乎忽略了区域设置

date 命令似乎忽略了区域设置

我想要做的是将区域设置环境变量(LC_TIME我认为)设置为能够date以良好的 ISO 格式输出的内容。

通过查看其他 Stack Exchange 问题和答案,例如这个,看来我走在正确的轨道上,并且使用语言en_DK环境应该可以实现我想要的效果。

LC_TIME=en_DK date仍然给我与以前相同的日期格式。我还尝试设置LANGLC_ALL,并将它们设置为en_DK.UTF-8,但它们没有任何效果。为了进行健全性检查,我尝试将所有这些设置为ru_RU或,ru_RU.UTF-8因为这些会产生更明显的效果,但仍然没有变化。

我发现有一个名为 的包language-pack-ru,并安装了它,还运行了sudo update-localesudo dpkg-reconfigure locales,但仍然没有变化。我没有找到language-pack-dk。我的/usr/share/i18n/SUPPORTED文件有en_DK.UTF-8 UTF-8en_DK.ISO-8859-15 ISO-8859-15en_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

相关内容