c++ - tm 结构中 tm_sec 字段中 61 的用途是什么

标签 c++ c

根据cplusplus.com , tm 结构中的 tm_sec 字段在 C90 中接受从 0 到 61 的值,在 C99 和更高版本中接受从 0 到 60 的值。

我知道 60 可以用来表示闰秒,但是另一个(我的意思是 61)呢?他们为什么选择删除它?

是的,我将它标记为 C 和 C++,因为在这种情况下它与两种语言都相关。

最佳答案

061 的范围允许在给定年份的 12 月 31 日最多有 2 个连续的闰秒,这可能是错误的,因为在需要 2 个闰秒的年份中,这些不是在同一天添加的。

C 标准的较新版本正确地假设在任何给定的一天中一次最多插入一个闰秒。

详见https://en.wikipedia.org/wiki/Leap_second在 12 月和/或 6 月插入闰秒以避免漂移超过 0.9 秒,因此 tm_sec 的最大值应为 60 而不是 61

关于c++ - tm 结构中 tm_sec 字段中 61 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884095/

相关文章:

c++ - 对象按值传递时调用的析构函数

c - 是 printf 的输出 ("%d %d", c++, c);也未定义?

C++将.txt文件中的字符串输出到成员方法本地范围之外的动态数组

c++ - 使用堆栈的队列

c++ - 为什么我的编译器无法识别出这种转换,它何时存在?

c - 将 char 和 int 与 concat 混合

c - 为什么运行时上下文在为 10g 编译的程序中不能在 11g 上工作?

你能改变 C 非指针类型的内存地址吗?

c - 使用 dirent.h 浏览文件?

c++ - vector 和迭代器,打印出值而不是内存地址