asctime格式的起源是什么?

dpp*_*dan 16 c c++ datetime

为什么asctime函数返回的特定字符表示,即Www Mmm dd hh:mm:ss yyyy\n选择和它的起源是什么?信息的排序对我来说似乎很特殊,特别是把时间信息放在日期信息之间.这个(或者是这个)在美国是一个常见的日期时间表示吗?

Gia*_*zzi 15

这直接来自C.可能这一年后来被添加.这也\n很奇怪.在构建UNIX时可能是一个方便的功能,它通过使用得到了标准化.

注意:该函数是"过时的",可能会在更高版本的C中删除它.它被更强大的替换strftime().

POSIX没有关于选择的理由.

ESR写道:

在较旧的Unix中,以下函数可用于将时间和日期报告为字符串.它们连接在糟糕的设计选择中(日期字符串长度不可预测且包含尾随的"\n"),不能识别区域设置,并且在0之前或之后9999年具有未定义的行为.

我们也从第7版手册(1979年)中获得的信息也很少见手册页.

有人(克莱夫DW羽毛)寻找与你相同的信息(但直接与C标准组),但我找不到答案.只是因为在同一个线程上有一些不精确的电子邮件而纠正了C99 .

我认为很难获得更多信息.

  • 我发现`ctime()`,它在这里提供相同的格式:https://www.tuhs.org/Archive/Distributions/Research/Dennis_v5/v5man.pdf填充足够它提到`ctime()`存在(并且仍然存在)确实存在)对于Fortran来说.所以我可以想象这种格式刚被借用,因为Fortran比C更长. (2认同)
  • [V3的`ctime`](https://www.tuhs.org/cgi-bin/utree.pl?file=V3/man/man3/ctime.3)输出中没有年份,并且有一个BUGS注意:该例程必须重新组装闰年.(注意"汇编"而不是"编译" - 还没有C.)[V4的`ctime`](https://www.tuhs.org/cgi-bin/utree. pl?file = V4/man/man3/ctime.3)添加了年份和换行符. (2认同)

MSa*_*ers 6

它在美国并不常见,C理由甚至承认:

7.11本地化

....

日期和时间.标准函数asctime返回一个字符串,其中包含月份和工作日名称的缩写,并返回一种格式的各种元素,即使在其原始国家/地区也可能被视为异常.

事后看来,它是那些永远不应该成为标准的功能之一.缺乏基本原理证明其包含是一个明显的迹象.