티스토리 뷰

Java

Java8 New features #4 (LocalDateTime/LocalTime)

§무명소졸§ 2020. 8. 28. 17:25

Java8 이전 버전에서는 날짜,시간 등의 작업을 위해서 java.util.Date 나 Time 클래스를 이용했다. 하지만 이 클래스들은 동시성 부분이나 TimeZone 으로 인한 어려움이 있었다. 그래서 자바 8 부터는 날짜 시간 작업을 위해 개선된 클래스가 소개됐는데 LocalTime ,  LocalDate 그리고 LocalDateTIme 클래스이다.

LocalTime

LocalTime 클래스는 오직 시간을 위한 클래스이다. 날짜 정보는 없고 시간 작업시 사용한다. 예를 들어 현재 시간이나 현재 시간 부터 몇 시간 후 등이다. 몇 가지 예제로 사용법을 알아보자.

LocalTime now = LocalTime.now();
System.out.println(now); //16:11:24.625
now = now.plusHours(3);  
System.out.println(now); //19:11:24.625
now = now.minusHours(3);
System.out.println(now); //16:11:24.625
String timeFormat = now.format(DateTimeFormatter.ofPattern("H:m"));
System.out.println(timeFormat); //16:11

 

LocalDate

LocalDate 클래스는 시간을 제외한 날짜 클래스이다. 날짜 제어를 위한 여러가지 편의 메서드를 제공한다. 아래 예제를 확인하자.

 LocalDate now = LocalDate.now();
 System.out.println(now); //2020-08-28
 now = LocalDate.of(2020, 8, 28); //of 를 이용한 정적 날짜 생성
 System.out.println(now); //2020-08-28
 now = now.plusDays(3);
 System.out.println(now); //2020-08-31 (3일후)
 now = now.plusWeeks(1);
 System.out.println(now); //2020-09-07 (1주일후)
 final DayOfWeek dayOfWeek = now.getDayOfWeek();
 System.out.println(dayOfWeek);//MONDAY (해당 날짜에 요일 구하기

 

LocalDateTime

LocalDateTime 은 클래스명에서 알수 있듯이 날짜와 시간 정보를 포함한 클래스이다. 포함한 메서드는 LocalDate 와 LocalTIme 과 대동소이하다.

LocalDateTime now = LocalDateTime.now(); 
System.out.println(now); //2020-08-28T17:04:23.388
now = now.minusDays(1);
System.out.println(now); //2020-08-27T17:04:23.388
String ymdhms = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); //2020-08-27 17:04:23
System.out.println(ymdhms);
System.out.println(now.isBefore(LocalDateTime.of(2020,8,29 ,0 ,0))); //true  now는 8월 29일 이전 이다.
System.out.println(now.isAfter(LocalDateTime.of(2020,8,26, 0 ,0 ))); //true  now는 8월 26일 이후 이다.

 

Duration / Period 

Duration 과 Period 는 각 각 2개의 LocalTime 과 LocalDate 값을 인수로 받는다. 두 시간의 차이 정보를 구하고 싶을 때 유용하다.

final int days = Period.between(LocalDate.of(2020, 2, 20),
LocalDate.of(2020, 2, 24)).getDays();
System.out.println(days); //4  "2020-02-20 ~ 2020-02-24  4일차이"


final long seconds = Duration.between(LocalTime.of(13, 30),
LocalTime.of(13, 35)).getSeconds();
System.out.println(seconds); //300  "5분 차이 second 환산"
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크