Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“struct tm”中的“tm”代表什么?_C_Datetime_C11 - Fatal编程技术网

“struct tm”中的“tm”代表什么?

“struct tm”中的“tm”代表什么?,c,datetime,c11,C,Datetime,C11,只是好奇。我倾向于将struct tm类型的变量命名为类似time_bits或类似的名称,因为它包含分解的日历时间位。我看到的大多数文档都将这种类型称为“日历时间”,而不是表示时间的“时钟时间”或“纪元秒”。它几乎肯定只是表示时间。ISO标准将其描述为: 。。。它包含日历时间的组成部分,称为分解时间 如果将其命名为struct time,很多人会将其与此函数混淆: time_t time(time_t *); 尽管C结构中的标记不会干扰变量/函数名,但使用不同的名称可以减少混淆。您肯定会想读@

只是好奇。我倾向于将struct tm类型的变量命名为类似time_bits或类似的名称,因为它包含分解的日历时间位。我看到的大多数文档都将这种类型称为“日历时间”,而不是表示时间的“时钟时间”或“纪元秒”。

它几乎肯定只是表示时间。ISO标准将其描述为:

。。。它包含日历时间的组成部分,称为分解时间

如果将其命名为struct time,很多人会将其与此函数混淆:

time_t time(time_t *);

尽管C结构中的标记不会干扰变量/函数名,但使用不同的名称可以减少混淆。

您肯定会想读@DavidC.Rankin这是一个很好的读物。简洁而翔实。然而,它确实完全错误地表示了UTC的POSIX表示法,该表示法缺少闰秒,因此它可以读取时间,但不能测量时间的长跨度。我找到的唯一一个很好的参考是和相关的libtz.aPoint,这是一个很好的起点,但要全面了解时间和日历是一个很好的起点。从天文学的角度来看,行星的位置需要相对论效应之外几乎所有时间应用中最精确的位置。标准库中的很多东西,包括命名,根本没有合理的理由。当C被标准化时,他们只是在Unix代码库中到处挑选各种函数,并给它们标准库状态。即使功能凌乱且设计拙劣。至于曾经发明struct tm的Unix恐龙是哪一种,以及他们为什么这样命名,在C的基本原理中没有提到。这一切都可以追溯到70年代初。