我正在阅读strftime(3)的手册页,我发现了这个:
%b根据当前语言环境的缩写月份名称。(从 计算tm_mon。)[...]
%h相当于%b。(苏)
两者完全一样还是有什么区别?是否有一种特殊情况应该优先于另一个?
它们是相同的。
几十年来,出现了许多不同的 Unix 实现,以及许多在字符串表示和日期之间进行转换的不同函数。其中一些函数用于%b缩写的月份,其中一些用于%h. 随着时间的推移,所有遗留接口都strftime被弃用了,不同的格式代码被合并,不仅具有不同的strftime等效项,而且还具有相关的strptime函数(解析字符串以生成日期)和命令行date实用程序。(到 的命令行选项之间仍然存在很多差异date,但至少核心格式代码是可互操作的。)结果是许多格式代码有两种不同的拼写。
大多数现代程序都使用%b,并且您不太可能找到仅支持 的系统%h,至少在博物馆之外。但两者%b并%h正在POSIX强制,具有相同的含义,并没有什么,这表明%h正面临折旧。因此,您使用哪一种是您的选择。