

1. 날짜와 시간
- Date : 날짜와 시간을 다룰 목적으로 JDK1.0 부터 제공되어온 클래스
- Calendar : JDK1.1 부터 제공되어온 클래스
- java.time패키지 : JDK1.8부터 제공되어온 클래스
Calendar와 GregorianCalendar
Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 함
Calendar cal = new Calendar(); // 오류
Calendar cal = Calendar.getInstance(); //Calendar 클래스를 구현한 클래스의 인스턴스 반환
getInstance()는 시스템의 국가와 지역설정을 확인해서 태국인 경우에는 BuddhistCalendar의 인스턴스를 반환
태국을 제외한 나머지는 GregorianCalendar의 인스턴스 반환
Date와 Calendar간의 변환
Calendar가 새로 추가되면서 Date는 대부분의 메서드가 'deprecated' 되었으므로 잘 사용하지는 않지만, 여전히 Date를 필요로 하는 메서드들이 존재
1. Calendar을 Date로 변환
Calendar cal = Calendar.getInstance();
Date d = new Date(cla.getTimeInMillis());
2. Date를 Calendar로 변환
Date d = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(d);
2. 형식화 클래스
형식화 클래스는 java.text패키지에 포함되어 있으며, 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있는 방법을 객체지향적으로 설계하여 표준화
2.1. DecimalFormat
형식화 클래스 중에서 숫자를 형식화 하는데 사용
기호 | 의미 | 패턴 | 결과 (1234567.89) |
0 | 10진수(값이 없을 때는 0) | 0 0.0 0000000000.0000 |
1234568 1234567.9 0001234567.8900 |
# | 10진수 | # #.# #######.## |
1234568 1234567.9 1234567.89 |
. | 소수점 | #.# | 1234567.9 |
- | 음수부호 | #.#- -#.# |
1234567.9- -1234567.9 |
, | 단위 구분자 | #,###.## #,####.## |
1,234567.89 12314567.89 |
E | 지수기호 | #E0 0E0 ##E0 00E0 ####E0 0000E0 #.#E0 0.0E0 0.000000000E0 00.00000000E0 000.0000000E0 #.#########E0 ##.########E0 ###.#######E0 |
1.E7 1E6 1.2E6 12E5 123.5E4 1235E3 1.2E6 1.2E6 1.234567890E6 12.34567890E5 123.4567890E4 1.23456789E6 1.23456789E6 1.23456789E6 |
; | 패턴구분자 | #,###.##+;#,###.##- | 1.234,567.89+(양수일 때) 1.234,567.89-(음수일 때) |
% | 퍼센트 | #.#% | 123456789% |
₩u2030 | 퍼밀(퍼센트 * 10) | #.#₩u2030 | 123456789% |
₩u00A4 | 통화 | ₩u00A4 #,#### | ₩ 1,234,568 |
' | escape 문자 | '#'#,### ''#,### |
# 1,234,568 '1.234,568 |
2.2. SimpleDateFormat
날짜 데이터를 원하는 형대로 출력할 때 사용
기호 | 의미 |
G | 연대(BC, AD) |
y | 년도 |
M | 월(1~12 또는 1월~12월) |
w | 년의 몇 번째 주(1~53) |
W | 월의 몇 번째 주(1~5) |
D | 년의 몇 번째 일(1~366) |
d | 월의 몇 번째 일(1~31) |
F | 월의 몇 번째 요일(1~5) |
E | 요일 |
a | 오전/오후(AM, PM) |
H | 시간(0~23) |
k | 시간(1~24) |
K | 시간(0~11) |
h | 시간(1~12) |
m | 분(0~59) |
s | 초(0~59) |
S | 천분의 일초(0~999) |
z | Time zone(General time zone) |
Z | Time zone(RFC 822 time zone) |
' | escape문자(특수문자를 표현하는데 사용) |
2.3. MessageFormat
데이터를 정해진 양식에 맞게 출력할 수 있도록 도와줌
import java.text.*;
class MessageFormatEx1 {
public static void main(String[] args) {
String msg = "Name: {0} \n Tel: {1} \n Age: {2} \n Birthday: {3}";
Object[] arguments = {
"이자바", "02-123-1234", "27", "07-09"
};
String result =
MessagFormat.format(msg, arguments);
System.out.println(result);
}
}
//결과
Name: 이자바
Tel: 02-123-1234
Age: 27
Birthday: 07-09
3. java.time패키지
- java.time
- 날짜와 시간을 다루는데, 필요한 핵심 클래스들을 제공
- java.time.chrono
- 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공
- java.time.format
- 날짜와 시간을 파싱하고, 형식화하기 위한 클래스들을 제공
- java.time.temporal
- 날짜와 시간의 필드(field)와 단위(unit)를 위한 클래스들을 제공
- java.time.zone
- 시간대(time-zone)와 관련된 클래스들을 제공
시간을 표현할 때는 LocalTime클래스, 날짜를 표현할 때는 LocalDate클래스, 시간과 날짜 모두 표현할 때는 LocalDateTime클래스 사용
java.time패키지에 속한 클래스의 객체를 생성하는 방법
- now() : 현재 날짜와 시간을 저장하는 객체 생성
- of() : 해당 필드의 값을 순서대로 지정
- Period : 날짜의 차이 계산
- Duration : 시간의 차이 계산
'study > Java의 정석' 카테고리의 다른 글
[Java의 정석] Chapter 9 java.lang패키지와 유용한 클래스 (0) | 2023.03.22 |
---|---|
[Java의 정석] Chapter 8 예외처리 (0) | 2023.03.22 |
[Java의 정석] Chapter 7 객체지향 프로그래밍2 (0) | 2023.03.21 |
[Java의 정석] Chapter 6 객체지향 프로그래밍1 (0) | 2023.03.15 |
[Java의 정석] Chapter 5 배열 (0) | 2023.03.07 |