Date는 날짜를 표현하는 클래스이다.
Date 클래스의 매개변수를 가진 생성자들은 대부분 Deprecated 되어 Date()만 주로 사용된다.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Date.html
Date() 생성자는 컴퓨터의 현재 날짜를 읽어 Date 객체로 만든다.
Calendar 클래스는 달력을 표현하는 추상 클래스이다. 날짜와 시간을 계산하는 방법이 지역과 문화에 따라 다르다.
Calendar 클래스를 사용하려면 Calendar.getInstance()로 컴퓨터에 설정되어 있는 시간대(TimeZone)을 기준으로 한 Calendar 하위 객체를 얻어서 사용한다.
Calendar의 다양한 기능은 Java docs에서 확인하자.
Date와 Calendar는 날짜와 시간 정보를 읽는 것은 가능하지만 조작하는 것은 불가능하다. java.time 패키지의 LocalDateTime 클래스는 날짜와 시간을 조작할 수 있다 LocalDateTime.now()로 현재 컴퓨터의 날짜와 시간을 읽을 수 있다.
// 실행결과
2023-02-04T15:13:20.701662200
년 빼기, 년 더하기, 월 빼기, 월 더하기 등의 기능을 사용할 수 있다. Java docs에 더 자세히 나와있다.
이후 날짜인지, 이전 날짜인지, 동일 날짜인지에 대해 boolean 값을 리턴한다.
LocalDateTime dateTime = LocalDateTime.of(2022, 2, 4, 15, 17, 0);
System.out.println(dateTime.format(DateTimeFormatter.ofPattern("yyyy.MM.dd a HH:mm:ss")));
// 실행결과
2022.02.04 오후 15:17:00
Format 클래스는 숫자 또는 날짜를 원하는 형태의 문자열로 변환해주는 기능을 제공한다. Format은 추상 클래스로, 자식 클래스로는 DateFormat, MessageFormat, NumberFormat 클래스가 있다.
DateFormat 클래스의 자식인 SimpleDateFormat 클래스와 NumberFormat 클래스의 자식인 DecimalFormat 클래스를 자주 쓴다.
패턴 문자 | 의미 |
---|---|
y | 년 |
M | 월 |
d | 일 |
D | 월 구분이 없는 일(1~365) |
E | 요일 |
a | 오전/오후 |
w | 년의 몇 번째 주 |
W | 월의 몇 번째 주 |
H | 시(0~23) |
h | 시(1~12) |
K | 시(0~11) |
k | 시(1~24) |
m | 분 |
s | 초 |
S | 밀리세컨드(1/1000초) |
DecimalFormat decimalFormat = new DecimalFormat("#,###.0");
String result = decimalFormat.format(1234567.89);
System.out.println("result = " + result);
// 실행결과
result = 1,234,567.9