java8时间类的一些封装

时间秒杀一切 提交于 2019-11-27 23:54:25

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;
        }
    }

  

 

转载于:https://www.cnblogs.com/JAYIT/p/10690809.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!