簡體   English   中英

為什么tm_sec在time.h中的范圍是0-60而不是0-59?

[英]Why does tm_sec range from 0-60 instead of 0-59 in time.h?

我的time.h有以下tm定義:

struct tm {
    int tm_sec;     /* seconds after the minute [0-60] */
    int tm_min;     /* minutes after the hour [0-59] */
    int tm_hour;    /* hours since midnight [0-23] */
    ...
}

我只是注意到他們將tm_sec記錄在0-60之間。 我一直認為它的范圍是0-59,就像tm_min一樣。 我當然沒見過時鍾閱讀時間10:37:60 ......

你認為這只是這個90年代伯克利起源文件留下的文檔錯誤嗎?

或者是否有一些我不知道的更微妙的事情?

閏秒是這樣的原因:

閏秒是對協調世界時(UTC)時間刻度的正負1秒調整,使其接近平均太陽時。

當在UTC時間23:59:60添加正閏秒時,它將后續UTC日(在00:00:00 UTC)的開始延遲一秒,從而有效地減慢了UTC時鍾。

ctime的手冊頁解釋說這是關於閏秒:

tm_sec :分鍾后的秒數,通常在0到59的范圍內,但最多可以為60,以允許閏秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM