이 글은 남궁성의 정석코딩 [자바의정석-기초편]을 수강하며 정리한 글입니다.
🟣 기본 환경: IDE: Eclipse, Language: Java
java.util.Date: 날짜와 시간을 다룰 목적으로 만들어진 class
Date Method는 거의 deprecated(앞으로 사라질 수도 있으니 사용하지 말라)되었지만, 여전히 사용 중
java.util.Calendar: Data class를 개선한 새로운 class
java.time package: Data와 Calendar의 단점을 개선한 새로운 class를 제공
Calendear class(abstract class)
-> 인스턴스 생성할 수 X
Calendar cal = new Calendar(); (X)
-> getInstance() method 사용하여 객체 생성
Calendar cal = Calendar.getInstance();
get()으로 날짜와 시간 필드 가져오기: int get(int field)
Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 셋팅됨
int this Year = cal.get(Calendar.YEAR); // 올해가 몇년인가
int lastDayOfMonth = cal.getActualMaxium(Calendar.DATE); // 이 달의 마지막날
Calendar에 정의된 필드
- YEAR: 년
- MONTH: 월(0부터 시작)
- DATE: 일
- WEEK_OF_YEAR: 그 해의 몇 번째 주
- WEEK_OF_MONTH: 그 달의 몇 번째 주
- DAY_OF_MONTH: 그 달의 몇 번째 일
- DAY_OF_YEAR: 그 해의 몇 번째 일
- DAY_OF_WEEK: 요일(1: 일요일)
- DAY_OF_WEEK_IN_MONTH: 그 달의 몇 번째 요일
- HOUR: 시간(0~11)
- HOUR_OF_DAY: 시간(0~23)
- MINUTE: 분
- SECOND: 초
- MILLISECOND: 천분의 일초
- ZONE_OFFSET: GMT 기준 시차
- AM_PM: 오전, 오후
* 날짜 지정 시, 월이 0부터 시작한다는 점에 유의
날짜 간의 차이: 초단위로 변경 후 계산→년월일로 재변환
* 초→시분초로 재변환 시, 거스름돈 큰 것부터 나눠주는 방식 차용
1460원= 500_2개+100_4개+50_1개+10_1개
clear()는 calendar 객체의 모든 필드를 1970.1.1 00:00:00으로 초기화
→ 객체를 생성하고 나서는 clear()를 꼭 해주고 나서 set method 사용
clear(int field)는 calendar 객체의 특정 필드를 초기화
get(): 필드 읽기
set(): 필드 변경
add(): 특정 필드 값을 증가 또는 감소
- 다른 필드에 영향: 8월 31일→ +1일→ 9월 1일
roll(): 특정 필드 값을 증가 또는 감소
- 다른 필드에 영향X: 8월 31일→ +1일→ 8월 1일
달력 만들기
Date Method의 대부분은 deprecated 되었지만 여전히 사용 중
calendar와의 호환이 필요할 때가 있음
* 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);
형식화 class: DecimalFormat, SimpleDateFormat
숫자와 날짜를 원하는 형식으로 쉽게 출력 가능
(숫자, 날짜↔문자열)
* DecimalFormat: 숫자→형식 문자열
double number = 1234567.89;
DecimalFormat df = new DecimalFormat(”#.#E0”)
String result = df.format(number); // 1.2E6
형식 문자열→숫자
DecimalFormat df = new DecimalFormat(”#,###.##”);
Number num = df.parse(”1,234,567.89”);
double d = num.doubleValue(); // 1234567.89
* Integer.parseInt는 ','가 포함된 문자열을 숫자로 변환 못함
* SimpleDateFormat()
Date today = new Date();
SimpleDateFormat df = new SimpleDateFormat(”yyyy-MM-dd”);
String result = df.format(today); // 2023-01-01
M-Month, m-minute
D-1년 기준, d-해당 월 기준
H-23시간제, h-12간제
m-분, s-초
소스 코드
참고 자료
📑 [자바의 정석] ch10-4~8 Calendar예제
'Java > Java' 카테고리의 다른 글
[자바의 정석_기초편] Chapter11. 컬렉션 프레임워크 (Collections framework)_2 (0) | 2023.06.03 |
---|---|
[자바의 정석_기초편] Chapter11. 컬렉션 프레임워크 (Collections framework)_1 (1) | 2023.05.25 |
[자바의 정석_기초편] Chapter09. java.lang package / Useful class_2 (0) | 2023.05.17 |
[자바의 정석_기초편] Chapter09. java.lang package / Useful class_1 (0) | 2023.05.14 |
[자바의 정석_기초편] Chapter08. 예외처리(Exception) (0) | 2023.05.13 |