zoukankan      html  css  js  c++  java
  • 某年某月某日是星期几的算法思想和编程

    我采用的是维基百科上的算法

    把四个数加起来然后同余7就是所求的星期数。这四个数分别是:

    C:2(3-(c mod4))

    Y:(y mod28+[y mod28/4])mod7(闰年1、2月份Y-1)

    M:((3.4+(m-3)mod12×2.6)mod7(1、2月份M值分别为7,3

    D:d mod7

    就是说——W=(C+Y+M+D)mod7

    举例说明:2008年12月10日

    (6+3+5+3)mod7=3,即该日是星期三,其中c=20、y=8、m=12、d=10

    再举一例:2008年2月10日

    (6+2+3+3)mod7=0,即该日是星期日,其中c=20、y=8、m=2、d=10

    还举一例:1842年8月29日

    (2+3+2+1)mod7=1,即该日是星期一,其中c=18、y=42、m=8、d=29



    public class Today
    {
        public static void main(String[] args)
        {
                String[] a = null;
                System.out.println("请输入年月日,以逗号隔开:");
                Scanner sc = new Scanner(System.in);
                String str = sc.next();
                a = str.split(",");
                int y = Integer.valueOf(a[0]);
                int m = Integer.valueOf(a[1]);
                int d = Integer.valueOf(a[2]);
                
                int M = 0;
                int year = 0;
                int Y = 0;
                
                int a1 = y % 10;
                int a2 = y % 100/10;
                int a3 = y % 1000/100;
                int a4 = y / 1000;
                
                int c = a4*10+a3;    //得到世纪数;
    //            得到年份;
                if (a2 == 0)
                    year = a1;    
                else
                    year = a2*10+a1;
                
                int C = 2*(3-(c % 4));
                
                if(m==1)
                    M = 7;
                else if(m == 2)
                    M = 3;
                else
                    M = ((int) (3.4+(m-3)%12*2.6))%7;
                
                if(y%400==0||y%4==0&&y%100!=0&&m<3)
                    Y = (year%28+(year%28)/4)%7-1;
                else
                    Y = (year%28+(year%28)/4)%7;
                
                int D = d % 7;
                
                int week = (C + Y + M + D) % 7;
                
                String w = "日一二三四五六".substring(week, week+1);
                
            
                System.out.println(str + "是星期" + w);
                
            }

        }


    如果有不对的地方,请批评指正;  


  • 相关阅读:
    实习第2天
    转:JavaScript事件冒泡简介及应用
    icon font字体图标字库汇总
    Express4--说明
    图标字体的使用
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    【转】 Mybatis/Ibatis,数据库操作的返回值
    spring+quartz报错:Table 'BANKSTEELERP_OLD.QRTZ_TRIGGERS' doesn't exist
    【转】mysql 触发器实现两个表的数据同步
    【转】Linux中如何安装.rpm、.tar、.tar.gz和tar.bz2
  • 原文地址:https://www.cnblogs.com/penggy/p/7475868.html
Copyright © 2011-2022 走看看