반응형
728x170
유닉스 시간은 시각을 나타내는 방식이다.
1970년 1월 1일 00:00:00 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것이다.
자바에서 이 유닉스 시간을 활용해서 D-day같은 것을 만들 수 있다.
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 | class Cal { Calendar cal = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); String[] ss; public int doomDay(String s) { ss = s.split("-"); int d_day; long unix = cal.getTimeInMillis(); cal2.set(Integer.parseInt(ss[0]), Integer.parseInt(ss[1]), Integer.parseInt(ss[2])); //입력 받아온 것으로 날짜셋팅 long unix2 = cal2.getTimeInMillis(); //입력 받아온 날짜의 유닉스시간 구하고 long min = (unix/1000) - (unix2/1000); //해당 기준 날짜와 입력 받은 날짜의 유닉스 시간 차를 계산한다. d_day = (int)Math.abs(min/(60*60*24)); //24시*60분*60초 값을 곱해서 int값으로 변환한뒤 D-day를 구한다. return d_day; } public int diffDate(String s, String s2) { String[] s1 = s.split("-"); String[] s22 = s2.split("-"); int day; cal.set(Integer.parseInt(s1[0]), Integer.parseInt(s1[1]), Integer.parseInt(s1[2])); //첫번째 값으로 들어온 날짜 셋팅 cal2.set(Integer.parseInt(s22[0]), Integer.parseInt(s22[1]), Integer.parseInt(s22[2])); //두번째 값으로들어온 날자 셋팅 long unix = cal.getTimeInMillis(); //첫번째 값 날짜 유닉스 시간 설정 long unix2 = cal2.getTimeInMillis(); //두번째 값 날짜 유닉스 시간 설정 long min = (unix/1000) - (unix2/1000); //유닉스 시간 차를 구하고 day = (int)Math.abs(min/(60*60*24)); //24시 60분 60초 값을 곱해서 디데이를 구한다. return day; } } Colored by Color Scripter |
위 클래스는2개의 메소드가 존재한다. 하나는 현재 시간과 사용자가 입력한 1개의 값에 대한 D-day를 구하는 메소드(Doomday)이고
하나는 사용자가 불러온 2개의 값의 디데이를 구하는 메소드(diffDate)이다.
먼저 날짜는 - 구분자로 오기 때문에 - 구분자로 split()해주어 String배열을 만든다. 이후 그 배열 값을 이용해 날짜를 set()메소드로 셋팅해준다.
그리고 현재 시스템에 대한 유닉스 시간
long unix = cal.getTimeInMillis();
를 구해주고
사용자가 입력한 날짜를 셋팅한 날짜에 대해 유닉스 시간을
long unix2 = cal2.getTimeInMillis();
구해준다.
이후 유닉스 시간을 1000으로 나눈 값에 대한 차를 구한다.
(사용자 입력과 현재 시간에 대한 )
long min = (unix/1000) - (unix2/1000);
그리고 그 차에 24시*60분*60초를 곱하여 d-day를 구할 수 있다.
d_day = (int)Math.abs(min/(60*60*24));
diffDate()메소드도 마찬가지이다.
그리고 메인에선 다음과 같이 호출하면 된다.
1 2 3 4 5 6 | Cal c = new Cal(); int d = c.doomDay("2017-3-26"); System.out.println(d); int d2 = c.diffDate("2015-10-31", "2015-11-02"); System.out.println("d2 : "+d2); |
또한
compareTo()메소드를 이용해 어느 날짜가 더 큰지를 알 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Calendar cal3 = Calendar.getInstance(); Calendar cal4 = Calendar.getInstance(); cal4.set(2017, 03, 26); int result = cal3.compareTo(cal4); //compare를 이요하면 누가 더 큰지 알 수 있다. if(result == 1) { System.out.println("오늘이 더 큽니다."); } else if(result ==-1 ) { System.out.println("cal4 날짜가 더 큽니다."); } else System.out.println("날짜가 같습니다."); Colored by Color Scripter |
위 소스가 그것에 대한 예제이다
반응형
그리드형
'java' 카테고리의 다른 글
자바 mysql 접속 및 출력(연동) (0) | 2017.08.18 |
---|---|
자바 mysql 연동 진행(jdbc 설치, mysql connector 설치) 및 확인 (0) | 2017.08.18 |
자바 날짜(Date, Calendar) 클래스 (0) | 2017.08.18 |
자바 Math 클래스, Random 클래스 (0) | 2017.08.18 |
자바 와퍼(wrapper, 포장) 클래스, 박싱(boxing), 언박싱(unboxing), 자동 박싱(auto boxing) (0) | 2017.08.18 |