为什么选择了asctime
函数返回的特定字符表示形式,即Www Mmm dd hh:mm:ss yyyy\n
,它的起源是什么?信息的排序对我来说似乎是特殊的,尤其是将时间信息放在日期信息之间。这是(或这)在美国常见的日期时间表示形式?
答案 0 :(得分:15)
这直接来自C。可能是在以后添加了年份。 \n
也很奇怪。可能是构建UNIX时的便利功能,并且已通过使用对其进行了标准化。
注意:该函数“已过时”,可能在更高版本的C中将其删除。它被功能更强大的strftime()
取代。
POSIX没有关于选择的理由。
ESR写道:
在较早的Unix中,以下功能可用于以字符串形式报告时间和日期。它们以错误的设计选择进行接线(日期字符串的长度不可预测,并且包含结尾的“ \ n”),不支持区域设置,并且在0之前或9999之后的年份中具有未定义的行为。
我们从手册的第七版(1979)see manual pages中也获得了很少的信息。
Somebody (Clive D.W. Feather)寻找与您相同的信息(但直接发送给C标准组),但我找不到答案。只是因为某些不正确的email on the same thread而更正了C99。
我认为很难获得更多信息。
答案 1 :(得分:6)
这在美国并不常见,C原理甚至承认:
7.11本地化
....
日期和时间。。标准函数
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#ffffff</color> //other colors... </resources>
返回一个字符串,该字符串 包括月份和工作日名称的缩写,并返回 各种元素,其格式甚至可能被认为是不寻常的 在其原籍国。
事后看来,这是永远不应使它成为标准的那些功能之一。缺乏合理的理由证明其被纳入是一个明显的迹象。