1) Java에서의 날짜와 시간
Java를 기반으로 하는 개발을 할 때 날짜를 이용하여 여러 기능을 제공할 때, java.time 패키지를 이용한다.
패키지(package)란?
간단하게는 클래스의 묶음이라고 할 수 있습니다. 패키지에는 클래스 혹은 인터페이스를 포함시킬 수 있으며 관련된 클래스끼리 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있습니다.
예제
public class Main {
public static void main(String[] args) {
System.out.println("now()를 활용하여 생성");
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
System.out.println(date);
System.out.println(time);
System.out.println(dateTime);
System.out.println("of()를 활용하여 생성");
LocalDate newDate = LocalDate.of(2021, 03, 29);
LocalTime newTime = LocalTime.of(22, 50, 55);
System.out.println(newDate);
System.out.println(newTime);
}
}
now() vs of()
위 예제에서 사용한 now() 와 of()는 객체를 생성할 때 사용된다. now()는 현재의 날짜 시간을, of()는 지정하는 값이 필드에 담겨진다.
2) 날짜와 시간의 형식 수정
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT);
String shortFormat = formatter.format(LocalTime.now());
System.out.println(shortFormat);
👉 LocalDate.now()를 했을 때와는 다르게 오전/오후가 추가되었으며 보다 직관적인 형태가 되었다.
형식을 변환하는데 사용한 DateTimeFormatter 클래스는 SHORT이외에도 다양한 FormatStyle 종류가 있다.
DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String myDate = newFormatter.format(LocalDate.now());
System.out.println(myDate);
👉 ofPattern에 작성한 형식대로 날짜가 출력된다. 이러한 방식을 활용하여 원하고자 하는 형식으로 출력을 할 수 있다.
- FormatStyle의 쓰임
아래 주소에서 다양한 쓰임새를 확인할 수 있다! https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
3) 날짜와 시간의 차이 계산
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(2021, 8, 9);
Period period = Period.between(today, birthday);
System.out.println(period.getMonths());
System.out.println(period.getDays());
👉 오늘 일자와 생일 일자간의 날짜 차이를 계산하기 위해서는 between()을 사용하면 구할 수 있다. (이외에도 until()로 구할 수도 있다.)