zoukankan      html  css  js  c++  java
  • Java通过基姆拉尔森公式判断当前日期是不是工作日

    基姆拉尔森公式

    算法如下:
    基姆拉尔森计算公式
    W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7

    在公式中d表示日期中的日数,m表示月份数,y表示年数。
    注意:在公式中有个与其他公式不同的地方:
    把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。

    判断当前日期是不是工作日

    Java实现
    工作日:周一 —— 周五
    如果是工作日返回true,不是返回false。

     /**
         * 判断一个日期是不是工作日
         * @param y
         * @param m
         * @param d
         * @return
         */
        public static boolean calculateWeekDays(int y,int m,int d){
            if(m==1||m==2) //把一月和二月换算成上一年的十三月和是四月
            {
                m+=12;
                y--;
            }
            //通过基姆拉尔森计算公式算出 在公式中d表示日期中的日数,m表示月份数,y表示年数。
            int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
    
            //小于等于4 就是工作日,周六周日不是工作日
            switch (week){
                case 0:
                    System.out.println("星期一");break;
                case 1:
                    System.out.println("星期二");break;
                case 2:
                    System.out.println("星期三");break;
                case 3:
                    System.out.println("星期四");break;
                case 4:
                    System.out.println("星期五");break;
                case 5:
                    System.out.println("星期六");break;
                case 6:
                    System.out.println("星期日");break;
            }
    
            return week<=4;
        }
    

    运行结果

     public static void main(String[] args) {
           System.out.println(calculateWeekDays(2020,12,12));
       }
    

    在这里插入图片描述

  • 相关阅读:
    Python的包管理工具Pip
    C语言移位运算符
    malloc函数具体解释
    HDU
    Java中Scanner的使用方法
    DOS call 中的%cd%,当前文件夹演示
    没有找到MSVCR100.dll解决方法
    什么是响应式表格(响应式表格和普通表格的区别)
    Redis和Memcache和MongoDB简介及区别分析(整理)
    GIT将本地项目上传到Github(两种简单、方便的方法)
  • 原文地址:https://www.cnblogs.com/dataoblogs/p/14121812.html
Copyright © 2011-2022 走看看