asctime格式的起源是什么?

时间:2019-02-04 10:04:30

标签: c++ c datetime

为什么选择了asctime函数返回的特定字符表示形式,即Www Mmm dd hh:mm:ss yyyy\n,它的起源是什么?信息的排序对我来说似乎是特殊的,尤其是将时间信息放在日期信息之间。这是(或这)在美国常见的日期时间表示形式?

2 个答案:

答案 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> 返回一个字符串,该字符串   包括月份和工作日名称的缩写,并返回   各种元素,其格式甚至可能被认为是不寻常的   在其原籍国。

事后看来,这是永远不应使它成为标准的那些功能之一。缺乏合理的理由证明其被纳入是一个明显的迹象。