Caleldar cal = new Calendar(); // 에러. 추상클래스는 인스턴스 생성 불가Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 셋팅됨int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아냄int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 달의 마지막날
4~5. Calendar 클래스 예제
get() 으로 날짜와 시간 필드 가져오기
Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 세팅int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아냄int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 달의 마지막 날
Calendar dt = Calendar.getInstance();// Thu Aug 29 07:13:03 KST 2017System.out.println(new Date(dt.getTimeInMillis()));dt.clear();// Thu Jan 01 00:00:00 KST 1970System.out.println(new Date(dt.getTimeInMillis()));// 새로운 객체 다시 할당dt = Calendar.getInstance();// Thu Aug 29 07:13:03 KST 2017System.out.println(new Date(dt.getTimeInMillis()));// 시,분,초 초기화dt.clear(Calendar.SECOND);dt.clear(Calendar.MINUTE);dt.clear(Calendar.HOUR_OF_DAY);dt.clear(Calendar.HOUR);// Thu Aug 29 00:00:00 KST 2017System.out.println(new Date(dt.getTimeInMillis()));
add() 는 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향 O)
Calendar date = Calendar.getInstance();date.clear(); // 모든 필드 초기화date.set(2020, 7, 31); // 2020년 8월 31일로 설정date.add(Calendar.DATE, 1); // 날짜(DATE)에 1을 더함date.add(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺌
roll() 는 특정 필드의 값을 증가 또는 감소 (다른 필드에 영향 X)
date.set(2020, 7, 31); // 2020년 8월 31일로 설정date.roll(Calendar.DATE, 1); // 날짜(DATE)에 1을 더함date.roll(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺌
Date 의 메서드는 대부분 deprecated 되었지만 여전히 사용
Calendar 를 Date 로 변환
Calendar cal = Calendar.getInstance(); ...Date d = new Date(cal.getTimeInMillis());
Date 를 Calendar 로 변환
Date d = new Date(); ...Calendar cal = Calendar.getInstance();cal.setTime(d);
9~12. 형식화 클래스
java.text 패키지의 DecimalFormat, SimpleDateFormat
숫자와 날짜를 원하는 형식으로 쉽게 출력 가능 (숫자, 날짜 → 형식 문자열)
double number = 1234567.89;DecimalFormat df = new DecimalFormat("#.#E0");String result = df.format(number); // result = "1.2E6"
형식 문자열에서 숫자와 날짜를 뽑아내는 기능 (형식 문자열 → 숫자, 날짜)
DecimalFormat df = new DecimalFormat("#,###.##");Number num = df.parse("1,234,567.89");double d = num.doubleValue(); // 1234567.89
13~16. SimpleDateFormat
날짜와 시간을 다양한 형식으로 출력할 수 있게 해줌
Date today = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 오늘 날짜를 yyyy-MM-dd 형태로 변환 후 반환String result = df.format(today);
특정 형식으로 되어 있는 문자열에서 날짜와 시간을 뽑아낼 수 있음
DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");DateFormat df2 = new SimpleDateFormat("yyyy/MM/dd");Date d = df.parse("2015년 11월 23일");String result = df2.format(d);