반응형

개발을 하다보면 자주 서버의 시간을 확인하여 기준일로 두어 조회하거나 시간을 출력해주거나 다양한 용도로 사용하는데 이때마다 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시간 뒤 출력

날짜 제어 출력

 

plus~(), minus~() 메소드를 통하여 제어가 가능하다.

 

 

LocalDate 날짜 관련에서 사용가능 메소드


LocalDate.plusYears(long); //년추가
LocalDate.plusMonths(long); //월추가
LocalDate.plusWeeks(long); //주추가
LocalDate.plusDays(long); //일추가
LocalDate.minusYears(long); //년감소
LocalDate.minusMonths(long); //월감소
LocalDate.minusWeeks(long); //주감소
LocalDate.minusDays(long); //일감소

 

LocalTime 시간 관련에서 사용가능 메소드


LocalTime.now().plusHours(long); //시간추가
LocalTime.now().plusMinutes(long); //분추가
LocalTime.now().plusSeconds(long); //초추가
LocalTime.now().plusNanos(long); //나노초추가
LocalTime.now().minusHours(long); //시간감소
LocalTime.now().minusMinutes(long); //분감소
LocalTime.now().minusSeconds(long); //초감소
LocalTime.now().minusNanos(long); //나노초감소

 

LocalDateTime에서는 모두 사용 가능하다.

반응형