我正在阅读package time
的golang源代码
我得到了一些常量,比如:
// file: /usr/local/go/src/time/time.go
const (
secondsPerMinute = 60
secondsPerHour = 60 * secondsPerMinute
secondsPerDay = 24 * secondsPerHour
secondsPerWeek = 7 * secondsPerDay
daysPer400Years = 365*400 + 97
daysPer100Years = 365*100 + 24
daysPer4Years = 365*4 + 1
)
我想知道为什么
daysPer400Years = 365*400 + 97
daysPer100Years = 365*100 + 24
但不是
daysPer400Years = 365*400 + 100
daysPer100Years = 365*100 + 25
当我输入这个问题时,我自己得到了答案----
通常我们称一年为闰年,如果X可以被4整除。虽然X年可以被100整除,但不能被400整除,我们说X不是闰年。
这意味着,每100年,至少有24个闰年。在这100年中,有一年必须被100整除,但可能不能被400整除,这种现象发生的概率为3/4。换句话说,每100年,24个闰年的概率为75%,25个闰年为25%。这就是的原因
daysPer100Years = 365*100 + 24
每400年,必须有3年可以被100整除,但不能被400整除。这就是的原因
daysPer400Years = 365*400 + 97
//that is : daysPer400Years = 365*400 + (25 * 4 - 3)
// or : daysPer400Years = 365*400 + (24 * 4 + 1)