java8时间类的一些封装

java

1、判断平年和闰年

  1. (prolepticYear & 3) == 0 这个条件使用了位运算,与上3在二进制计算下即为:& 00…011。目的是保留最后2位二进制数,然后判断是否最后两位二进制数等于0。其目的是判断prolepticYear是否是4的倍数(第3位开始的二进制数代表的十进制数为4、4 * 2、4 * 2 * 2·······),闰年一定要满足是4的倍数的条件;
  2. (prolepticYear % 100) != 0 || (prolepticYear % 400) == 0 这个条件即为判断是否是整百数或是否是400的倍数。

 @Override

public boolean isLeapYear(long prolepticYear) {

return ((prolepticYear & 3) == 0) && ((prolepticYear % 100) != 0 || (prolepticYear % 400) == 0);

}

2、获取每个月的天数

  public int length(boolean leapYear) {

switch (this) {

case FEBRUARY:

return (leapYear ? 29 : 28);

case APRIL:

case JUNE:

case SEPTEMBER:

case NOVEMBER:

return 30;

default:

return 31;

}

}

  

 

以上是 java8时间类的一些封装 的全部内容, 来源链接: utcz.com/z/392401.html

回到顶部