본문 바로가기

개발

Java - 날짜와 시간

반응형

java.util.Date
 - 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK 1.0)
 - Date의 메서드는 거의 deprecate되었지만, 여전히 쓰이고 있다.

java.util.Calendar
 - Date클래스를 개선한 새로운 클래스(JDK 1.1). 여전히 단점이 존재 

java.time패키지
 - Date와 Calendar의 단점을 개선한 새로운 클래스를 제공(JDK1.8)

Calendar 클래스
 - 추상클래스 이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.
 Calendar calendar = Calendar.getInstance();
 - get()으로 날짜와 시간 필드 가져오기 - int get(int field)
  Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 셋팅
   int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 
   int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE) // 이달의 마지막날 

Calendar 클래스에 정의된 필드 

필드명 설 명
YEAR
MONTH 월(0부터시작)
WEEK_OF_YEAR
WEEK_OF_MONTH 그 달의 몇 번째 주
DATE
DAY_OF_MONTH 그 달의 몇 번째일
DAY_OF_YEAR 그 해의 몇 번째일 (1월 1일부터 몇번째일인지)
DAY_OF_WEEK 요일(1 : 일요일 , 1 ~ 7)
DAY_OF_WEEK_IN_MONTH 그 달의 몇 번째 요일
HOUR 시간(0~11)
HOUR_OF_DAY 시간(0~23)
MINUTE
SECOND
MILLISECOND 천분의 일초 1/1000
ZONE_OFFSET GMT기준 시차(천분의 일초 단위)
AM_PM 오전/오후

- 날짜 시간 정하기 
void set(int field, int value)
void set(int year, int month, int date)
void set(int year, int month, int date, int hourOfDay, int minute)
void set(int year, int month, int date, int hourOfDay, int minute, int second)
** 월은 0 부터 시작 : 월이 배열로 되어 있기 때문 {"JAN", "FEB", ... }
날짜 
Calendar date = Calendar.getInstance();
 date.set(2017, 7, 15) // 2017년 8월 15일
 date.set(Calendar.YEAR, 2017);
 date.set(Calendar.MONTH, 7);
 date.set(Calendar.DATE, 15);

 시간 정하기
Calendar time = Calendar.getInstance();
// 10시 20분 15초
 time.set(Calendar.HOUR_OF_DAY, 10);
 time.set(Calendar.MINUTE, 20);
 time.set(Calendar.SECOND, 15);

초기화 
 time.clear() // 2017년 1월 1일 00:00:00
 time.clear(Caleendar.HOUR); // 필드 초기화

필드 값 증가 감소
 - set() 특정값 필드 증가 다른 필드에 영향 O
  예)월이나 일을 초과하면 다른필드도 변경된다.
 time.set(2020, 7, 31); // 2020년 8월 31일
 time.add(Calendar.DATE, 1);        // 날짜(DATE)에서 1을 더한다.
 time.add(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺀다

 - roll() 특정값 필드 증가 다른 필드에 영향 X
  예)월이나 일을 초과해도 다른필드는 변경이 없다.
 time.set(2020, 7, 31); // 2020년 8월 31일
 time.roll(Calendar.DATE, 1);        // 날짜(DATE)에서 1을 더한다.
 time.roll(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺀다

- Date의 메서드는 대부분 deprecated 되었지만 여전히 사용
 1. Calendar를 Date로 변환
 Calendar cal = Calendar.getInstance();
  ...
 Date d = new Date(cal.getTimeInMillis());
 2. Date를 Calendar로 변환
 Date d = new Date();
 ...
 Calendar cal = Calendar.getInstance();
 cal.setTime(d);

반응형