Java

달력유틸

top2blue 2017. 7. 4. 18:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package kr.baeoom.util;
 
public class CalendarUtil {
    public static boolean isLeapYear(int year){ // 윤년인지를 알려주는 메서드
        return (year%400==0 || year%4==0 && year%100!=0);
    }
    
    public static int getLastday(int year, int month){ // 지정 년월의 마지막 날짜를 구해주는 메서드
        int m[] = {31,28,31,30,31,30,31,31,30,31,30,31}; // 월의 마지막 날짜
        m[1= isLeapYear(year) ? 29 : 28;
        return m[month-1];
    }
    
    public static int getSumday(int year,int month,int day){ // 지정 년월일까지 총일수를 구해주는 메서드 
        int sumday = (year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400// 전년도까지의 일수
        for(int i=1;i<month;i++) sumday += getLastday(year, i); // 전월까지 일수
        sumday += day; // 일수
        return sumday;
    }
    
    public static int getWeekday(int year,int month,int day){ // 지정 년월일의 요일을 구해주는 메서드 
        return getSumday(year, month, day)%7;
    }
    
    public static String getGanjiH(int year){
       String[] gan = "甲(갑),乙(을),丙(병),丁(정),戊(무),己(기),庚(경),辛(신),壬(임),癸(계)".split(",");
       String[] ji = "子(자),丑(축),寅(인),卯(묘),辰(진),巳(사),午(오),未(미),辛(신),酉(유),戌(술),亥(해)".split(",");
       // 요약하면 연도에서 4을 뺀 숫자의 끝자리가 10간, 
       // 연도에서 4을 뺸 후 12로 나눈 숫자의 나머지가 12지입니다.
       int ganIndex = (year-4)%10
       int jiIndex = (year-4)%12;  
       return gan[ganIndex].charAt(0+""+ ji[jiIndex].charAt(0);
       
    }
    public static String getGanjiK(int year){
        String[] gan = "甲(갑),乙(을),丙(병),丁(정),戊(무),己(기),庚(경),辛(신),壬(임),癸(계)".split(",");
        String[] ji = "子(자),丑(축),寅(인),卯(묘),辰(진),巳(사),午(오),未(미),辛(신),酉(유),戌(술),亥(해)".split(",");
        // 요약하면 연도에서 4을 뺀 숫자의 끝자리가 10간, 
        // 연도에서 4을 뺸 후 12로 나눈 숫자의 나머지가 12지입니다.
        int ganIndex = (year-4)%10
        int jiIndex = (year-4)%12;  
        return gan[ganIndex].charAt(2+""+ ji[jiIndex].charAt(2);
        
    }
    public static String getDdi(int year){
        String[] gan = "甲(갑),乙(을),丙(병),丁(정),戊(무),己(기),庚(경),辛(신),壬(임),癸(계)".split(",");
        String[] ji = "子(자),丑(축),寅(인),卯(묘),辰(진),巳(사),午(오),未(미),辛(신),酉(유),戌(술),亥(해)".split(",");
        String[] ddi = "쥐,소,호랑이,토끼,용,뱀,말,양,원숭이,닭,개,돼지".split(",");
        String[] color = "청,청,적,적,황,황,백,백,흑,흑".split(",");
        // 요약하면 연도에서 4을 뺀 숫자의 끝자리가 10간, 
        // 연도에서 4을 뺸 후 12로 나눈 숫자의 나머지가 12지입니다.
        int ganIndex = (year-4)%10
        int jiIndex = (year-4)%12;  
        return gan[ganIndex].charAt(2+""+ ji[jiIndex].charAt(2)+
               "," + color[ganIndex] + "" + ddi[jiIndex] ;
        
    }
    
    public static void main(String[] args) {
        for(int i=2000;i<=2050;i++){
            System.out.println(i + " : " + getDdi(i));
        }
    }
}
 
cs