개발을 하다보면 자주 서버의 시간을 확인하여 기준일로 두어 조회하거나 시간을 출력해주거나 다양한 용도로 사용하는데 이때마다 JAVA에서 날짜를 구하는 방식은 Calendar.getInstance(); 메소드를 활용하여 날짜를 파싱하고 변경하고 출력하는 형태였다. (1.8미만 버전)
날짜를 변경할때 사용하는 cal.add(); 메소드는 상수를 사용하여 매번 찾게 만들고, 번거롭고 힘든 작업이었다.
1.8이상의 자바를 사용중이라면 LocalDate, LocalTime, LocalDateTime등을 사용하여 훨씬 쉽게 작성이 가능하다.
소스를 통해 차이점을 확인해보자.
Calendar - 오늘 날짜 구하기
Calendar cal = Calendar.getInstance();
String format = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(format);
String date = sdf.format(cal.getTime());
System.out.println(date);
LocalDate - 오늘 날짜 구하기
LocalDate now = LocalDate.now();
System.out.println(now);
동일한 데이터이지만 훨씬 간단하게 날짜를 호출하는걸 확인 할 수 있다.
그럼 LocalDate 클래스는 어떤식으로 형변환을 할 수 있을까?
- format 메소드를 활용하면 된다.
LocalDate now = LocalDate.now();
String format = now.format(DateTimeFormatter.ofPattern("yyyy.MM.dd"));
System.out.println(now);
System.out.println(format);
LocalDate 클래스는 날짜 데이터, LocalTime 클래스는 시간, LocalDateTime 클래스는 시간 날짜 데이터를 가져올 수 있다.
서버의 현재 시간 가져오기, 제어하기
서버 날짜 및 시간 구하기
LocalDate ld = LocalDate.now(); // 날짜 구하기
System.out.println("LocalDate > " + ld);
LocalTime lt = LocalTime.now(); // 시간 구하기
System.out.println("LocalTime > " + lt);
LocalDateTime ldt = LocalDateTime.now(); //날짜 + 시간 구하기
System.out.println("LocalDateTime > " + ldt);
날짜를 추가, 감소하기 // 시간을 추가, 감소하기
LocalDate ld = LocalDate.now(); // 날짜 구하기
LocalDate nld = ld.plusDays(5);
System.out.println("LocalDate > " + ld); //현재 날짜
System.out.println("plusDate > " + nld); //5일 뒤
LocalTime lt = LocalTime.now(); // 시간 구하기
LocalTime nlt = lt.minusHours(2); // 시간 빼기
System.out.println("LocalTime > " + lt); // 현재시간
System.out.println("minusHours > " + nld); //2시간 전 시간
LocalDateTime ldt = LocalDateTime.now(); //날짜 + 시간 구하기
LocalDateTime nldt = ldt.plusDays(3).plusHours(3); //3일 + 3시간 뒤
System.out.println("LocalDateTime > " + ldt); // 현재 날짜 + 시간
System.out.println("3day 3hours after > " + nldt); // 3일 + 3시간 뒤 출력