博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
某年某月某日是星期几的算法思想和编程
阅读量:5064 次
发布时间:2019-06-12

本文共 1294 字,大约阅读时间需要 4 分钟。

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

把四个数加起来然后同余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);
            
        }
    }

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/penggy/archive/2013/04/23/4786513.html

你可能感兴趣的文章
Python 集合(Set)、字典(Dictionary)
查看>>
oracle用户锁定
查看>>
(转)盒子概念和DiV布局
查看>>
Android快速实现二维码扫描--Zxing
查看>>
获取元素
查看>>
nginx+lighttpd+memcache+mysql配置与调试
查看>>
ubuntu12.04 启动apache2 对.htaccess 的支持
查看>>
proxy写监听方法,实现响应式
查看>>
23种设计模式 简介
查看>>
677. Map Sum Pairs
查看>>
sass列表函数
查看>>
MySQL之常用SQL语句
查看>>
Win10连接远程桌面的时候提示您的凭证不工作该怎么办?
查看>>
JavaScript去除字符串前后的空格
查看>>
Net学习日记_基础提高_11_俄罗斯方块_整理概括篇
查看>>
ZBarReaderView屏幕旋转问题
查看>>
IOS8 TouchID使用介绍
查看>>
http、TCP/IP协议与socket之间的区别
查看>>
php文件的管理
查看>>
StringBuffer StringBuilder append
查看>>