Java判斷該年是否為潤年(leap year)的方式。
潤年就是一年有366天,比一般365天的年(平年)多1天。平年的2月有28日,而潤年多出來的一天是在2月29日。
滿足潤年的條件為:
- 公元年為4的倍數且非100的倍數
- 公元年為400的倍數
Java 計算公元年是否為潤年的程式碼如下。
boolean isLeapYear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}
參考於Quartz CronExpression.isLeapYear(int year)
。
或用java.time.Year
的isLeap(long year)
。原始碼如下,判斷是否為4的倍數使用了bitwise &
(AND
)運算子n & 3
檢查二進位後兩碼是否為00
,因為4的倍數二進位後兩碼為00
。
public static boolean isLeap(long year) {
return ((year & 3) == 0) && ((year % 100) != 0 || (year % 400) == 0);
}
沒有留言:
張貼留言