我的问题看起来应该很简单,但我很惊讶我找不到答案。
我住在加拿大,所以 en_CA.UTF8 或 en_US.UTF8 是最合适的语言环境,但是我真的不喜欢它们的日期/时间格式。我同意 xkcd ( https://xkcd.com/1179/ ) 有一种格式化日期的方法:yyyy-mm-dd。我什至已经习惯了使用 24 小时制计时。
所以这对我来说是一场彻底的灾难,格式为 en_US.UTF8:“Sat 27 Jan 2018 05:20:38 PM EST”
我确定必须是使用以下变体的语言环境
%Y-%间 - %d%H:%M:%S%Z
适用于 d_fmt、d_t_fmt、date_fmt 等,但我找不到哪些语言环境使用哪些格式的参考。
我见过这个问题Best practice to custom date/time format system-wide? 它没有回应,所以我选择问一个新的,因为我的略有不同,我不想自定义语言环境,我希望能够指定
LC_TIME=??
并获得“正确”的格式。就我而言,理想的答案是参考文档,其中详细说明了用于各种语言环境的格式,以便我可以选择最接近我想要的 LC_TIME。
顺便说一下,我已经使用我满意的设置完成了手动修改 en_CA.UTF8 的练习,但是在多个环境中这样做太费时了,必须有一种更简单的方法。
大多数 Linux 系统上的区域设置数据是在源代码中定义glibc
的;我\xe2\x80\x99 将解释如何使用它来查找匹配的语言环境。
在存储库的克隆中,进入localedata/locales
;这里每个区域设置都是一个单独的文件,日期格式由条目确定d_fmt
(d_t_fmt
日期和时间)。如您所料,它们使用%d
、%m
、 和%y
,但通常编码为 Unicode 代码点;%
is <U0025>
、d
is <U0064>
、m
is<U006D>
和y
is <U0079>
,其大写对应项高 32 点。
跑步
\n\ngrep -iE \'d_t_fmt.*(%|<U0025>)(y|<U00[57]9>).*(%|<U0025>)(m|<U00[46]D>).*(%|<U0025>)(d|<U00[46]4>)\' *\n
Run Code Online (Sandbox Code Playgroud)\n\n列出了一些候选者,其中en_DK
可能是最合适的:
$ LC_TIME=en_DK date +%x\n2018-02-11\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
3646 次 |
最近记录: |