日期的计算

经常会被问到几月几日是周几的情况,如果不查日历,如何快速用程序计算出来,一种简单的方法是,记住很久以前的某一天是星期几,比如公元1年1月1日是星期一,然后一天一天模拟,算出日期是星期几。

这种方法容易理解,但是代码实现起来会比较长,除此之外可以通过公式快速根据日期计算这一天是星期几,网上有很多计算日期的公式,下面介绍一种相对靠谱的公式,被称为蔡基姆拉尔森计算公式

假设星期为w,年份为y,月份为m,日期为d

      w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7

然后把计算出来的w加上1就是真正的星期几了

注意每年的1、2月要当成上一年13、14月计算,伤处的除法均为整除

输入年月日计算星期几的程序如下:

package 计蒜客;

import java.util.*;
class Main {
    static String[] weekday = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
    static int whatday(int y, int m, int d) {
        // 返回正确的星期。用 0 - 6 表示 星期 1 - 7
        if(m==1||m==2){
            m=m+12;
            y=y-1;
        }
        int w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
        return w;
    }
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int y = cin.nextInt();
        int m = cin.nextInt();
        int d = cin.nextInt();
        System.out.println(weekday[whatday(y, m, d)]);
    }
}

 

posted @ 2018-03-17 16:28  henu小白  阅读(959)  评论(0编辑  收藏  举报