strftime 中的 %h 和 %b 有什么区别

Pra*_*shi 0 c strftime

我正在阅读strftime(3)的手册页,我发现了这个:

%b 根据当前语言环境的缩写月份名称。(从 计算tm_mon。)

[...]

%h 相当于%b。(苏)

两者完全一样还是有什么区别?是否有一种特殊情况应该优先于另一个?

ric*_*ici 5

它们是相同的。

几十年来,出现了许多不同的 Unix 实现,以及许多在字符串表示和日期之间进行转换的不同函数。其中一些函数用于%b缩写的月份,其中一些用于%h. 随着时间的推移,所有遗留接口都strftime被弃用了,不同的格式代码被合并,不仅具有不同的strftime等效项,而且还具有相关的strptime函数(解析字符串以生成日期)和命令行date实用程序。(到 的命令行选项之间仍然存在很多差异date,但至少核心格式代码是可互操作的。)结果是许多格式代码有两种不同的拼写。

大多数现代程序都使用%b,并且您不太可能找到仅支持 的系统%h,至少在博物馆之外。但两者%b%h正在POSIX强制,具有相同的含义,并没有什么,这表明%h正面临折旧。因此,您使用哪一种是您的选择。