Golang time如何實現的?

時間 2021-06-05 01:33:47

1樓:波羅學

要理解這個問題,你首先得知道平閏年,題主應該是知道的,閏年首先必須是能被 4 整除的,但如果不能被 400 整除,只能被 100 整除,也不是閏年。再來看上面的常量:

unixToInternal

int64=(

1969

*365

+1969/4

-1969

/100

+1969

/400)*

secondsPerDay

從變數名大概能看出來,把 unix 時間轉化為內部的絕對時間,即計算從公元元年到 unix 起始時間所經歷的秒數。

1969 * 365 表示把所有年份都按平年計算。但肯定不是所有年份都是平年,還需要把閏年考慮進去。1969 / 4 表示可能閏年多出的天數,但並不是所有能被 4 整除的都是閏年,比如,還要減去 1969 / 100,但是 400 也能被 100 整數,確實閏年,因而還需要把 1969 / 400 加回來。

好像也不是很難。

Go 的 time 包原始碼中總共有三個時間,分別是 internal、wall、unix,應該是分別對應三個標準,即公元元年、2023年、和2023年,關於這個 1885 年怎麼來的,因為 Go 是可以表示超過 int32 的 unixtimestamp 的時間的,1885 應該是擴充套件出來的能表示的最小值。

time 包中結構體還包含了兩種時間,分別是時間時間和 Monotonic 單調時間,Monotonic 時間和程序啟動時間有關。

就說這麼多吧!具體就不介紹了。我也是剛看的原始碼,如有錯誤,請指正,哈哈。

共同富裕能否實現,如何實現?

已登出 自從貨幣出現在於人類社會中,貧富的對立就沒有消失過。在無盡的苦難當中等待乙個完美的體制來解決這個問題,不如讓貨幣消失掉。 氿氿 我覺得能實現,但是這種實現是建立在科技生產力的發達之下,比如當機械人能夠代替人工,金錢不再是交換的媒介,人類已經對大自然的掌控力到達百分之90以上,對外太空的探索已...

女生這樣的擇偶標準可以實現嗎?如何實現?

已登出 集美我支援你 我不覺得您的要求高,而且您的要求和我有好幾條是十分類似的 我也是特別高的,也是對於地區有比較高的偏好O O而且我也在外地讀大學,感jio對地域要求高的話其實 在校園裡也不是很好找 這點可能和大多數回答不一樣 唯二可能引起爭議的是,玩玩 您可能真的可以從校園的追求者中考慮認識相處...

專科機務如何實現實現自我價值?

時光丶人愛 實現自我價值和從事什麼行業關係很緊密嗎?難道自我價值需要被除自己之外的人評估後才能有意義?你如何保證以後幾十年社會不會變化,做一輩子老師難道就是一輩子拿粉筆在黑板上寫板書?如果你因工作限制了你的思想和創造力而感到苦惱,那麼換工作或者改變環境改變不了什麼的,所有的 打工人 的生活都被禁錮在...