我正在阅读(3)的手册页,我发现了以下内容:
%b根据当前区域设置的缩写月份名称。(从tm_mon.) ..。%h等价于%b。(SU)
两者是完全相同的,还是有什么不同?是否有一种比另一种更受欢迎的特殊情况?
发布于 2020-07-18 05:57:23
他们的行为是相等的。然而,%h在单Unix规范 (SU)中是标准化的。这是在C89中不存在的一个补充。
实际上从来没有%h会工作的情况,但是%b不会--这意味着您的目标是一个支持%h但不支持%b的Unix系统,它的实现既不符合31年的标准修订版,也不符合它的任何修正案。相反的可能性更大(不幸的是)。
TL;DR:总是使用%b而不是%h。
发布于 2020-07-18 05:30:54
他们是一样的。
几十年来,有许多不同的Unix实现,以及在字符串表示和日期之间进行转换的许多不同的函数。其中一些函数使用%b作为缩写月份,有些函数使用%h。随着时间的推移,除strftime之外的所有遗留接口都被废弃,不同的格式代码被合并,不仅与不同的strftime等效,而且还与相关的strptime函数(解析字符串以生成日期)和命令行date实用程序合并。( date的命令行选项之间仍然存在很大差异,但核心格式代码至少是可互操作的。)其结果是,许多格式代码有两个不同的拼写。
大多数现代程序都使用%b,而且您不太可能找到一个只支持%h的系统,至少在博物馆之外是这样。但是%b和%h都是由Posix强制要求的,它们的含义是相同的,并且没有任何迹象表明%h正面临反对。所以你用哪一种是你的选择。
https://stackoverflow.com/questions/62964749
复制相似问题