我的问题看起来应该很简单,但我很惊讶我找不到答案。
我住在加拿大,所以 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>、dis <U0064>、mis<U006D>和yis <U0079>,其大写对应项高 32 点。
跑步
\n\ngrep -iE \'d_t_fmt.*(%|<U0025>)(y|<U00[57]9>).*(%|<U0025>)(m|<U00[46]D>).*(%|<U0025>)(d|<U00[46]4>)\' *\nRun Code Online (Sandbox Code Playgroud)\n\n列出了一些候选者,其中en_DK可能是最合适的:
$ LC_TIME=en_DK date +%x\n2018-02-11\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3646 次 |
| 最近记录: |