Java – calculate the day of the date (給定日期算出星期幾)

Input:

08 05 2015

Output:

WEDNESDAY

 

非常陽春的解法:(且不考慮到很過去的年份)

public class Solution {
    public static String getDay(String day, String month, String year) {
        /*
        * Write your code here.
        */
        int y=0, m=0, d=0, c=0, w=0;
        String weekday="";
        
        d = Integer.parseInt(day);
        y = Integer.parseInt(year.substring(2,4));
        c = Integer.parseInt(year.substring(0,2));
        m = Integer.parseInt(month);
        if(m == 1){
            m = 11;
            y--;
        }else if(m == 2){
            m = 12;
            y--;
        }else{
            m = m-2;
        }
       
        w = (int)(d+(2.6*m -0.2)+(5*(y%4))+3*y+(5*(c%4)))%7;
       
        //System.out.println("y="+y+ ", d="+d+", m="+m+", c="+c+", w="+w);        
        
        switch(w){
            case 0:
                weekday= "SUNDAY";
                break;
            case 1:
                weekday= "MONDAY";
                break;
            case 2:
                weekday= "TUESDAY";
                break;
            case 3:
                weekday= "WEDNESDAY";
                break;
            case 4:
                weekday= "THURSDAY";
                break;
            case 5:
                weekday= "FRIDAY";
                break;
            case 6:
                weekday= "SATURDAY";
                break;
        }
        
        return weekday;
    }

public static void main(String[] args) {
 Scanner in = new Scanner(System.in);
 String month = in.next();
 String day = in.next();
 String year = in.next();
 
 System.out.println(getDay(day, month, year));
 }
}

 

參考:

  1. wiki 高斯公式: https://zh.wikipedia.org/wiki/星期的計算#.E7.AE.97.E6.B3.95

作者

RongSon

Graduate Student of CCU COMM Game Development, Network Communication, macOS/Ubuntu/Android, Arduino/Raspberry Pi/Intel Edison, Java/Python/C/C++

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *