자바/Java Calendar ( 캘린더 ) 란 ?
Calendar 란 날짜 관련 인스턴스 입니다.
달력이나 시간계산등을 사용 할 때 많이 쓰는 인스턴스 인데요. 어떻게 인스턴스를 생성하며 사용하는지 알아볼까요?
먼저 Calendar 객체를 얻기 위해서는
또한 getInstance() 메서드를 호출 하면 현재의 일짜와 시각으로 초기화가 되기 때문에 별도의 설정 작업 없이도
calendar.getTime() 메서드로 현재 시간을 얻어 올 수 있습니다.
그럼 예문을 통해 좀 더 자세히 알아 보겠습니다.
일반적으로 위와 같은 방법으로 많이 사용 하게 되는데요. 포맹팅된 시간에 시/분/초 시간등을 대입 하여 계산 할 수 있습니다. 그렇기 때문에 String 파일등을 시간으로 계산할 경우 가 생기면 매우 유용하게 계산 할 수 있겠죠?ㅎ
아니면 일일이 if조건을 걸고 예외처리를 해야 하는데 너무 힘들고 고단한(?) 작업 입니다.ㅎ
그럼 원하는 작업 후 리턴 받은 calendar 인스턴스를 다시 String으로 리턴 받고 싶은 경우는 어떻게 해야 될까요?
네 맞습니다 ㅎㅎ!! 다시 SimpleDateFormat 으로 포맷팅 해서 String으로 사용하면 됩니다.~!
간단하죠?ㅎ
이렇게 사용 하시면 됩니다~!
그리고 아래는 캘런더에서 getTimeInMillis() 를 사용한 예제를 만들어 보았습니다.
마지막으로 아래는 캘린더를 사용할 때 자주 사용하는 메서드 API 입니다.
참고 하시기 바랍니다.
Calendar 란 날짜 관련 인스턴스 입니다.
달력이나 시간계산등을 사용 할 때 많이 쓰는 인스턴스 인데요. 어떻게 인스턴스를 생성하며 사용하는지 알아볼까요?
먼저 Calendar 객체를 얻기 위해서는
Calendar calendar = Calendar.getInstance();위와 같은 방법으로 인스턴스를 얻어 와야 합니다.
또한 getInstance() 메서드를 호출 하면 현재의 일짜와 시각으로 초기화가 되기 때문에 별도의 설정 작업 없이도
calendar.getTime() 메서드로 현재 시간을 얻어 올 수 있습니다.
그럼 예문을 통해 좀 더 자세히 알아 보겠습니다.
/** * @explain HHmmss형태의 문자열을 Calendar 객체로 변환합니다. * @param filename * @param cuttime * @return calendar */ public static Calendar CalendarFromStringPlus(String filename , int cuttime) { // 캘린더 인스턴스를 얻는다. Calendar calendar = Calendar.getInstance(); try { // SimpleDateFormat 객체로 매개변수로 받은 String 파일을 "HHmmss"형식으로 // 변환하고 캘린더 인스턴스에 넣어 시간으로 변환 할 수 있다. SimpleDateFormat formatter = new SimpleDateFormat("HHmmss"); calendar.setTime(formatter.parse(filename)); // 현재 셋팅된 시/분/초 에 + 매개변수로 받은 값을 더할 수 있다. calendar.add( calendar.HOUR, + cuttime ); calendar.add( calendar.MINUTE, + cuttime ); calendar.add( calendar.SECOND, + cuttime ); } catch(ParseException e) { e.printStackTrace(); } // 오류 발생시에는 현재 셋팅된 초기 값으로 return 된다. return calendar; }
일반적으로 위와 같은 방법으로 많이 사용 하게 되는데요. 포맹팅된 시간에 시/분/초 시간등을 대입 하여 계산 할 수 있습니다. 그렇기 때문에 String 파일등을 시간으로 계산할 경우 가 생기면 매우 유용하게 계산 할 수 있겠죠?ㅎ
아니면 일일이 if조건을 걸고 예외처리를 해야 하는데 너무 힘들고 고단한(?) 작업 입니다.ㅎ
그럼 원하는 작업 후 리턴 받은 calendar 인스턴스를 다시 String으로 리턴 받고 싶은 경우는 어떻게 해야 될까요?
네 맞습니다 ㅎㅎ!! 다시 SimpleDateFormat 으로 포맷팅 해서 String으로 사용하면 됩니다.~!
간단하죠?ㅎ
/** * @explain 캘린더 객체를 HHmmss형태의 문자열로 변환합니다. * @param calendar 캘린더 객체 * @return 변환된 문자열 */ public static String StringSimpleFromCalendar(Calendar calendar) { // 날짜를 포맷팅 된 문자열로 변경 한다. SimpleDateFormat formatter = new SimpleDateFormat("HHmmss"); return formatter.format(calendar.getTime()); }
이렇게 사용 하시면 됩니다~!
그리고 아래는 캘런더에서 getTimeInMillis() 를 사용한 예제를 만들어 보았습니다.
class TestCalendar { /** * @explain Calendar 테스트 */ public void mTestCalendar() { // 현재 로직은 ( 현재 시간 + 300분 ) < ( 현재 시간 )을 비교하고 10초마다 +10를 하여 // 체크해서 300분후 로그를 찍는 로직 입니다. // 현재 시각이 204056(10시40분56초) 이고 300분을 calendar.add() 해준 경우, // 204056(10시40분56초)에서 300분이 넘어가게 되어 "HHmmss"형식에서는 014056(오전 // 01시40분56초)로 보여 지지만, 실제로는 dd 일수가 +1 증가 하게 됩니다. // 그렇기 때문에 calendar.getTimeInMillis() 메서드를 이용하면 현재 날짜와 시간을 // 밀리초로 바꿔서 반환해 주기때문에 편리하게 계산 할 수 있습니다. // 그리고 계산이 끝난 후에는 다시 Time() 형식으로 변환이 가능 합니다. // 현재 날짜 시간 + 300분이 더 해진다. Calendar calendarAfter30 = Calendar.getInstance(); calendarAfter30.add( calendarAfter30.MINUTE, 300 ); // SimpleDateFormat 을 이용하여 "HHmmss"형식에 맞게 현재시간에 300분을 // 더한 시간을 얻어올수 있다. SimpleDateFormat formatter = new SimpleDateFormat("HHmmss"); String getAfter30Time = formatter.format(calendarAfter30.getTime()); Log.d( "WAHTUP", "getAfter30Time = " + getAfter30Time ); Log.d( "WAHTUP", "calendarAfter30.getTimeInMillis(); = " + calendarAfter30.getTimeInMillis() ); // "HHmmss"형식을 "yyyyMMddHHmmss"으로 다시 바꿀 수 있다. SimpleDateFormat formatterDay = new SimpleDateFormat("yyyyMMddHHmmss"); String getNowTimeDay = formatterDay.format(calendarAfter30.getTime()); Log.d( "WAHTUP", "DAY getAfter30NowTime = " + getNowTimeDay ); Log.d( "WAHTUP", "DAY calendarAfter30.getTimeInMillis(); = " + calendarAfter30.getTimeInMillis() ); // 밀리초를 다시 "HHmmss" 형식의 Time 으로 변환 할 수 있다. String tempMilistoTime = formatter.format(calendarAfter30.getTimeInMillis()); Log.d( "WAHTUP", "tempMilistoTime = " + tempMilistoTime ); // 현재 날짜 시간을 얻는다. Calendar calendarNowTime = Calendar.getInstance(); for ( int a=0 ; a<1000 ; a++ ){ Log.d( "WAHTUP", "a = " + a ); // 10초 딜레이 try {Thread.sleep( 10000 );} catch ( InterruptedException e ) {e.printStackTrace();} // 10초에 한번씩 현재 시간에 10초를 더 해준다. calendarNowTime.add( calendarNowTime.SECOND, 10 ); Log.d( "WAHTUP", "calendarAfter30.getTimeInMillis(); = " + calendarAfter30.getTimeInMillis() ); Log.d( "WAHTUP", "calendarNowTime.getTimeInMillis(); = " + calendarNowTime.getTimeInMillis() ); // ( 현재시간 + 300분 ) < ( 현재시간 + 10 ) 가 더 커졌을 경우.! // 로그를 찍는다. if ( calendarAfter30.getTimeInMillis() < calendarNowTime.getTimeInMillis() ){ Log.d( "WAHTUP", "300분이 지났습니다." ); } } } }
마지막으로 아래는 캘린더를 사용할 때 자주 사용하는 메서드 API 입니다.
참고 하시기 바랍니다.
abstract void add (int field, int amount) : Date 의 연산 기능입니다. void clear () : 모든 시간 필드의 값을 클리어 합니다. int get (int field) : 지정된 시간 필드의 값을 취득합니다. static Calendar getInstance () : 디폴트의 타임 존 및 로케일을 사용해 달력을 취득합니다. Date getTime () : Calendar 의 현재 시각을 취득합니다. void set (int field, int value) : 시간 필드에, 지정된 값을 설정합니다. protected long getTimeInMillis () : Calendar 의 현재 시각을 long 로 취득합니다. 밀리세컨드로 반환 합니다.
'JAVA > 날짜/시간' 카테고리의 다른 글
자바/Java Calendar 사용법 (기본예제 포함) - 3 - (0) | 2012.05.15 |
---|---|
자바/Java Calendar 사용법 (기본예제 포함) - 2 - (0) | 2012.05.14 |
자바/Java Calendar 사용법 (기본예제 포함) - 1 - (5) | 2012.05.14 |
자바/Java Calendar ( 캘린더 ) 시간 셋팅 TIP (2) | 2011.11.20 |
자바/Java 현재 시간을 반환 ( Calendar 와 Date 함수 사용 ) (0) | 2011.10.19 |