再次,我在一个页面中发现了一些我不理解的有趣内容info
,info date
准确地说:
可选修饰符可以遵循可选标志和宽度规范。修饰符是:
E
使用区域设置的替代表示形式来表示日期和时间。此修饰符适用于%c
、%C
、%x
、%X
和%y
转换%Y
说明符。例如,在日本语言环境中,%Ex
可能会生成基于日本天皇统治的日期格式。
O
使用区域设置的替代数字符号来表示数字。此修饰符仅适用于数字转换说明符。如果格式支持修饰符但没有可用的替代表示形式,则它将被忽略。
问题:一个[其他]示例,如何使用此修饰符。
这个描述对我来说听起来像»如果设置了其他东西,会做一些事情,但不要期望太多«。有时我想知道这样的东西从何而来,它们的目的是什么。
答案1
我同意你的观点,有时有太多的选择,但世界很大,有很多不同的群体需要取悦,所以显然有人想要这个。
如果你查看 libc 库,你会发现这个函数:
7.6.2 精确访问区域设置数据
在编写 X/Open 可移植性指南时,作者意识到 localeconv 函数不足以提供对语言环境信息的合理访问。本来应该在语言环境中可用的信息(稍后在 POSIX.1 标准中指定)需要更多方法来访问它。因此引入了nl_langinfo函数。
— 函数:char * nl_langinfo(nl_item 项)
nl_langinfo 函数可用于访问语言环境类别的各个元素。与返回所有信息的 localeconv 函数不同,nl_langinfo 让调用者选择它需要的信息。这非常快,多次调用该函数也不成问题。
第二个优点是,除了数字和货币格式信息之外,还可以使用 LC_TIME 和 LC_MESSAGES 类别的信息。
类型 nl_type 在 nl_types.h 中定义。参数 item 是头文件 langinfo.h 中定义的数值。 X/Open 标准定义了以下值:
nl_items
您可以提供的功能之一nl_langinfo
是ERA
。
时代
返回值表示当前语言环境中使用的时代。大多数语言环境没有定义该值。定义此值的语言环境的一个示例是日语。在日本,日期的传统表示形式包括与当时天皇统治时期相对应的时代名称。
通常不需要直接使用该值。在格式字符串中指定 E 修饰符会导致 strftime 函数使用此信息。未指定返回字符串的格式,因此您不应假设在不同系统上了解它。