如何在 Linux 中获取本地(区域)日期格式?

3

你好,是否有可能在本地(区域)获取日期格式?理想情况下,跨平台方式实现,否则至少从Linux开始就足够了。

我的意思是:例如,在终端执行此行时,返回以本地(区域)方式格式化的日期(和时间):

date +"%c"

我希望的不是数字,而是以特定形式展示,例如,如果我将区域设置为立陶宛,我会看到:
2016 m. birželio 27 d. 19:06:11

所以我希望得到这个而不是上面的内容:
YYYY MM DD

如果我将区域设置为美国:

Mon 27 Jun 2016 07:09:24 PM EEST

在这种情况下,我想要得到的不是上述内容,而是:
DD MM YYYY

含义 - 不是实际数字,而是当地(区域)日期的格式。

我之后想要将这些信息用于面向用户的输入/输出操作。


1
你可能想要阅读更多有关 strftime 及其格式的信息,例如 "%c" 格式。 - Some programmer dude
@JoachimPileborg 所有这些选项都会返回一个或另一个结果,但没有一个能提供格式本身。也许我在我的帖子/问题中表述不清楚,我想要的是字母而不是数字。例如,也许有一种系统数据库可以告诉strftime在调用%c时使用什么格式。我想要那个信息 - 使用了什么格式。 - Galvotas
2
我想告诉你的是,你不需要知道实际格式。strftime也接受"%c"格式,可以给你提供所需的区域(地区)相关日期和时间输出。否则,你可以随时获取date程序的源代码并查看其操作。 - Some programmer dude
1
@JoachimPileborg 谢谢。我想我明白了。稍后会发布答案以供参考。 - Galvotas
"none of them delivers the formatting itself." 是一个问题,因为本地日期/时间格式是动态的。它可以在程序的生命周期内发生变化。因此,获取格式以供以后使用可能无法提供当前的日期/时间格式。 - chux - Reinstate Monica
我知道这有点晚了,但我觉得非常值得指出的是,@Joachim和@chux都错过了重点。至少,问题正是我想要一个答案的地方,而短暂的性质是无关紧要的。在我的情况下,Chrome表示它使用操作系统语言环境来处理HTML <input type=date />,因此我需要确切地验证它应该使用什么格式。 - Auspex
1个回答

3
虽然Joachims的提示是正确的,但这里提供一个针对您原始问题的解决方案。只需在bash中输入:
locale -k LC_TIME | grep ^d_fmt | cut -d= -f2

如果你需要时间格式而非日期格式,请使用t_fmt代替d_fmt,对于组合的日期/时间格式,请使用d_t_fmt


谢谢@Matthias,根据Joachim的提示,我找到了文件,但无法解码二进制格式。非常感谢! - Galvotas
2
一个更简单的Bash命令可以得到相同的输出:locale d_fmt - samjewell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接