【发布时间】:2017-12-25 01:47:21
【问题描述】:
只是好奇。我倾向于将struct tm 类型的变量命名为time_bits 或类似的名称,因为它包含分解的日历时间位。我看到的大多数文档都将这种类型称为“日历时间”,而不是 time_t 的“时钟时间”或“纪元秒”。
【问题讨论】:
-
您肯定会想阅读C Date Time tutorial
-
@DavidC.Rankin 读得很好。简明扼要,内容丰富。然而,它确实完全错误地表示了 UTC 的 POSIX 表示(它缺少闰秒 - 所以它可以用于读取时间,但不能用于测量它的长跨度)。我找到的唯一好的参考是Olsen's / the IANA's timezone database 和相关的
libtz.a -
点很好,但要全面了解 时间 和 日历 Calendars - Explanatory Supplement to the Astronomical Almanac (uspno.navy.mil) 是一个很好的起点。从天文学的角度来看,行星位置需要几乎所有时间应用中的最精确(相对论效应除外)。
-
标准库中的很多东西都没有合理的理由,包括命名。当 C 被标准化时,他们只是简单地从 Unix 代码库中到处挑选各种函数,并赋予它们“标准库”的地位。即使功能混乱且设计不佳。至于曾经发明
struct tm的 Unix 恐龙是什么样的,以及他们为什么如此命名事物,C 的基本原理中没有提到。这一切都可以追溯到 70 年代初。