본문 바로가기

웹 기술 쌈싸먹기/Java

[JAVA] 날짜와 시간 다루기

날짜와 시간 다루기

 

1) 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에 작성한 형식대로 날짜가 출력되었을 것입니다! 이러한 방식을 활용하여 우리는 원하고자 하는 형식으로 출력을 할 수 있습니다.

 

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()을 사용하면 구할 수 있습니다. (between() 이외에도 until()로 구할 수도 있습니다.)