날짜 시간 계산 예제

 

 

import java.util.*;
import java.text.*;
public class StringToDate {
public static void main(String[] args) {
try { String str_date="2010-07-09T12:50:58";
DateFormat formatter ; 
Date date ;
formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
date = (Date)formatter.parse(str_date);
System.out.println("Today is " +date );
} catch (ParseException e)
{System.out.println("Exception :"+e); }
}
}

 

 

 

Java에서 내가 알고 있는 시간과 관련된 클래스는 다음의 세가지가 있다.


Calendar

날짜와 요일 관련하여 유용한 기능들을 가진 클래스이다. 달력을 그리거나, 오늘이 한달중에서 몇번째 주이고 몇번째 요일인지 계산하는 기능들을 가지고 있다. 단, 시간 정확도는 분까지만 보장한다. 날짜 수준까지만 사용하는 것을 권장한다.


Date

날짜를 구하는 클래스이다. API문서에는 milisecond 수준까지 정확도를 보장한다고 되어 있다. 하지만 메소드중 많은 메소드가 deprecated(권장하지 않음)이기 때문에, 날짜 계산이 필요할 경우에는 Calendar클래스의 add(int, int)를 사용하고, millisecond 단위로 계산할때는 System.getCurrentTimemilis()를 권장한다.


System.getCurrentTimemilis()

국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각을 밀리초 단위까지 계산하여 long 값으로 반환한다. 주로 정확한 시간 계산이 필요한 경우에 해당 메서드를 주로 사용한다. 필요한 경우 Date클래스나 Calendar 클래스로 변환하여 사용할 수 있다.

 

아래는 Calendar 클래스의 사용법이다.

 

//현재 날짜를 받아옴. 

Calendar t = Calendar.getInstance();

//오늘날짜의 해당연도를 구함

String year = Integer.toString(t.get(Calendar.YEAR));

//오늘날짜의 해당 월을 구함. 1월은 0이기 때문에 + 1

String month = Integer.toString((t.get(Calendar.MONTH) + 1));

//한자리 숫자, 예를 들면 1월인 경우 "01"등으로 문자열 변환

month = month.length() > 1 ? month : "0" + month;

//오늘의 날짜 구함

String day = Integer.toString(t.get(Calendar.DAY_OF_MONTH));

day = day.length() > 1 ? day : "0" + day;

//현재 시각의 시를 구함.

String hh = Integer.toString(t.get(Calendar.HOUR_OF_DAY));

//현재 시각의 분을 구함.

String mm = Integer.toString(t.get(Calendar.MINUTE));

//오늘의 요일을 구함

String WeekDay = Integer.toString(t.get(Calendar.DAY_OF_WEEK));

//오늘이 1~5번째 주중 몇번째 주인지 구함. 

String WeekOfMonth = Integer.toString(t.get(Calendar.WEEK_OF_MONTH);

//오늘을 기준으로 3주전 날짜로 수정



t.add(Calendar.WEEK_OF_MONTH, -3);

 

 

 

 

아래는 Date 클래스의 사용법이다.

 

 

//현재 시각 가져오기.

Date today = new Date (); 

//출력

System.out.println ( today );

//시작일. 여기서는 샘플로 24시간 전의 시각을 지정.

Date startDay = new Date(System.currentTimeMillis() - 1000*60*60*24);

//종료일. 여기서는 샘플로 24시간 후의 시각을 지정.

Date endDay = new Date(System.currentTimeMillis() - 1000*60*60*24);

//해당 기간 조회

if(startDate.before(today) && endDate.after(today))

{

 System.out.pringln("지정하신 날짜는 해당 기간내에 존재합니다.");

}

 


 

출처: http://blog.naver.com/vlueguy7/70096153885