“struct tm”中的“tm”代表什么?
只是好奇。我倾向于将struct tm类型的变量命名为类似time_bits或类似的名称,因为它包含分解的日历时间位。我看到的大多数文档都将这种类型称为“日历时间”,而不是表示时间的“时钟时间”或“纪元秒”。它几乎肯定只是表示时间。ISO标准将其描述为: 。。。它包含日历时间的组成部分,称为分解时间 如果将其命名为struct time,很多人会将其与此函数混淆:“struct tm”中的“tm”代表什么?,c,datetime,c11,C,Datetime,C11,只是好奇。我倾向于将struct tm类型的变量命名为类似time_bits或类似的名称,因为它包含分解的日历时间位。我看到的大多数文档都将这种类型称为“日历时间”,而不是表示时间的“时钟时间”或“纪元秒”。它几乎肯定只是表示时间。ISO标准将其描述为: 。。。它包含日历时间的组成部分,称为分解时间 如果将其命名为struct time,很多人会将其与此函数混淆: time_t time(time_t *); 尽管C结构中的标记不会干扰变量/函数名,但使用不同的名称可以减少混淆。您肯定会想读@
time_t time(time_t *);
尽管C结构中的标记不会干扰变量/函数名,但使用不同的名称可以减少混淆。您肯定会想读@DavidC.Rankin这是一个很好的读物。简洁而翔实。然而,它确实完全错误地表示了UTC的POSIX表示法,该表示法缺少闰秒,因此它可以读取时间,但不能测量时间的长跨度。我找到的唯一一个很好的参考是和相关的libtz.aPoint,这是一个很好的起点,但要全面了解时间和日历是一个很好的起点。从天文学的角度来看,行星的位置需要相对论效应之外几乎所有时间应用中最精确的位置。标准库中的很多东西,包括命名,根本没有合理的理由。当C被标准化时,他们只是在Unix代码库中到处挑选各种函数,并给它们标准库状态。即使功能凌乱且设计拙劣。至于曾经发明struct tm的Unix恐龙是哪一种,以及他们为什么这样命名,在C的基本原理中没有提到。这一切都可以追溯到70年代初。