Backend/SpringBoot
날짜와 시간
Mo'Greene
2022. 6. 22. 00:47
2-1. 날짜와 시간 다루기
- 이번 장의 목표
- 기본적인 날짜와 시간을 출력 및 데이터를 가공하는 방법에 대해서 배워보겠습니다.
-
- Java에서의 날짜와 시간
- Java를 기반으로 하는 개발을 할 때 날짜를 이용하여 여러 기능을 제공해야 할 때가 있습니다. 날짜와 시간을 처리하는 클래스들을 다루면서 하나씩 공부를 해보겠습니다!
- 우리는 이제 날짜와 시간을 사용할 때 자주 쓰이는 java.time패키지에 대해서 하나씩 살펴볼 것입니다!
- 먼저, 하나씩 설명을 하기 전에 어떤 것들이 있는지 간단한 예제를 한번 보겠습니다!
- [코드스니펫] 날짜와 시간 다루기 예제 - Main 함수
- public class Main { public static void main(String[] args) { } }
→ 한번 실제로 실행을 해보셨나요? 출력결과를 확인하면 각 클래스가 어떤 정보를 제공하는지 느낌이 오실겁니다.</aside>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); } }
- LocalDate와 LocalTime은 java.time 패키지의 가장 기본이 되는 클래스 입니다. 이 두가지를 사용하는데 익숙해지시면 활용을 하는 것은 훨씬 쉬워질 것입니다!
- <aside> 👉 now() vs of() 위 예제에서 사용한 now() 와 **of()**는 객체를 생성할 때 사용됩니다. now()는 현재의 날짜 시간을, of()는 지정하는 값이 필드에 담겨집니다.
- </aside>
-
- 날짜와 시간의 형식 수정
- 날짜와 시간을 출력하는 방법을 알아봤습니다. 하지만, 출력문의 결과가 원하는 형식이 아닐 수 있습니다. 이럴 때 우리는 날짜와 시간을 원하는 형식으로 출력할 수 있어야 합니다. 아래 예제를 한번 실습해볼까요?
- [코드스니펫] 날짜와 시간 형식 수정 예제 - Main 함수
- public class Main { public static void main(String[] args) { } }
→ LocalDate.now() 를 했을 때와는 다르게 오전/오후가 추가되었으며 보다 직관적인 형태가 되었습니다!DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT); String shortFormat = formatter.format(LocalTime.now()); System.out.println(shortFormat);
- 여기서 잠깐! 우리가 사용하고자 하는 형식이 없거나 생각하는 형식이 있을 수 있습니다. 이번에는 우리가 지정한 형식대로 출력이 될 수 있도록 해보죠!
→ 어떻게 결과가 나왔나요? 네 맞습니다!! 😀 ofPattern에 작성한 형식대로 날짜가 출력되었을 것입니다! 이러한 방식을 활용하여 우리는 원하고자 하는 형식으로 출력을 할 수 있습니다.DateTimeFormatter newFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd"); String myDate = newFormatter.format(LocalDate.now()); System.out.println(myDate);
- FormatStyle의 쓰임 아래 주소에서 다양한 쓰임새를 확인할 수 있습니다!! (여러 코드를 실행해보세요!)
- https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
- → 형식을 변환하는데 사용한 DateTimeFormatter 클래스는 SHORT이외에도 다양한 FormatStyle 종류가 있습니다.
-
- 날짜와 시간의 차이 계산
- 이번에는 날짜와 시간의 차이를 계산하는 방법에 대해서 알아보겠습니다!
- [코드스니펫] 날짜와 시간 차이 계산 예제 - Main 함수
- public class Main { public static void main(String[] args) { } }
→ 오늘 일자와 생일 일자간의 날짜 차이를 계산하기 위해서는 **between()**을 사용하면 구할 수 있습니다. (between() 이외에도 until()로 구할 수도 있습니다.)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());
- 퀴즈
- [코드스니펫] 날짜와 시간 퀴즈 - Main 함수
- public class Main { public static void main(String[] args) { } }
- 답안
- import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Main { public static void main(String[] args) { DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd h/mm"); String now = dateTimeFormatter.format(LocalDateTime.now()); System.out.println("현재시간: " + now); } }
- 오늘의 날짜와 시간을 [연도/월/일 시간/일자]의 형식으로 값으로 출력해보세요.