목차
자바 날짜/시간 계산가산·감산이 간단하게
Java로 쉽게날짜/시간 가산/감산 계산하는 샘플 프로그램을 소개합니다.
샘플 프로그램의 특징은 다음과 같습니다.
- 현재, 또는 임의의 일자·시각으로부터 지정의 시간량을 가산·감산한 결과를 돌려줍니다.
- 플러스의 수치를 지정했을 경우 시간을 진행해, 마이너스의 경우는 돌려줍니다.
예를 들어, 현재 날짜 시간으로부터 10 일 전계산하는 경우는 이하가 됩니다.
Calendar cal = addMonth(-10); - 연, 월, 일, 시간, 분, 초 및 밀리초의 각 시간 필드에 대해 임의의 시간을 설정할 수 있습니다.
또한 지정된 시간부터 상대적으로계산그렇다면 인수에 Calendar 클래스를 전달합니다.
예를 들어, 다음에서는 지정된 Calendar 인스턴스에서 1년 진행됩니다.
Calendar cal = add(“지정된 Calendar”,1,0,0,0,0,0,0); - 각 시간 필드의 값이 해당 범위를 초과하면 다음과 같은 큰 시간 필드가 증가 또는 감소됩니다.
예를 들어, 아래에서는 현재 시각으로부터 1시간과 5분 진행하게 됩니다.
Calendar cal = addMinute(65);
샘플 프로그램
실행
샘플 프로그램에서는 리턴값으로계산 후의 일자를 보관 유지하는 java.util.Calendar 객체를 취득할 수 있으므로, java.util.Calendar#getTime() 메소드에 의해, java.util.Date로 변환해 java.text.SimpleDateFormat 에 의해 일자 캐릭터 라인으로 변환하고 있습니다.
◆실행예
public static void main(String[] args) {
SimpleDateFormat f = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println("現在 の日付・時刻 = "+ f.format(add(null,0,0,0,0,0,0,0).getTime()));
System.out.println("1年後 の日付・時刻 = "+ f.format(addYera(1).getTime()));
System.out.println("1ヶ月前 の日付・時刻 = "+ f.format(addMonth(-1).getTime()));
System.out.println("3時間後 の日付・時刻 = "+ f.format(addHour(3).getTime()));
System.out.println("30時間前の日付・時刻 = "+ f.format(addHour(-30).getTime()));
System.out.println("40分後 の日付・時刻 = "+ f.format(addMinute(40).getTime()));
System.out.println("80秒後 の日付・時刻 = "+ f.format(addSecond(80).getTime()));
System.out.println("1ヶ月前から、4日後の日付・時刻 = "+ f.format(add(null,0,-1,4,0,0,0,0).getTime()));
}
◆실행 결과
현재 날짜 시간은 2008/03/25 00:00:00입니다.
현재 날짜 / 시간 = 2008/03/25 00:00:00 1 년 후 날짜 / 시간 = 2009/03/25 00:00:00 1 개월 전 날짜 / 시간 = 2008/02/25 00:00:00 3 시간 후 날짜 / 시간 03:00:00 30시간 전의 날짜・시간 = 2008/03/23 18:00:00 40분 후의 날짜・시간 = 2008/03/25 00:40:00 80초 후의 날짜・시간 = 2008/03/25 00:0 2008/02/29 00:00:00
※2008년은 윤년 때문에 2월의 월말 일자는 29일이 됩니다.
이 샘플 프로그램은 Chat & Messenger의 "캘린더 일정 관리 기능"에서 실제로 사용하고 있습니다.
