나아가는 길에 발자국을 찍어보자

[Java] 날짜 타입 클래스(LocalDate, LocalTime, LocalDateTime) 본문

Spring && Spring boot

[Java] 날짜 타입 클래스(LocalDate, LocalTime, LocalDateTime)

NAWIN 2020. 9. 23. 14:14
반응형

이번에 개발을 진행하면서 중간에 생각보다 오래 시간이 걸린 부분이 날짜 타입을 받고 가공하는 부분이었다.

진행하면서 알게된거지만 전에는 DTO에서 그냥 String 형식으로 데이터를 전달받아 DB에 저장할 때,

JSON포맷을 사용했었는데, 이번에는 이렇게 하지않고 날짜타입을 계속 유지하는것이 더 좋다기도 하고 맞는 것 같아서 날짜 타입으로 개발을 진행하였다. 매번 현재 시각을 바로 저장하기만했지 이미 저장된 날짜데이터를 내가 원하는 방식으로 가공해서 저장하려니 개념이 부족한것이 티가 났다. 

 

오늘까지 해야할 업무가 마무리되서 시간이 생겼기 때문에 정리해 본다!

 

 

[ 날짜, 시간 클래스 ]

1. LocalDate 클래스

- 컴퓨터의 현재 날짜 정보

- 결과 : 2020-09-23

- 사용 방법

LocalDate currentDate = LocalDate.now(); 
LocalDate myDate = LocalDate.of(int year, int month, int datOfMonth); //년,월,일

- 추가 메소드

getYear();
getMonth(); (Month 열거값나옴 JANUARY, FEBRUARY)
getMonthValue(); 월(1,2,3,...)
getDayOfYear(); 년의 몇 번째 일
getDayOfMonth(); 월의 몇번째 일
getDateOfWeek();요일(MONDAY, TUESDAY,...)
isLeapYear(); 윤년여부

 

2. LocalTime 클래스

- 컴퓨터 현재 시간 정보

- 결과 : 18:25:02.489

- 사용 방법

LocalTime currentTime = LocalTime.now(); 
LocalTime targetTime = LocalTime.of(int hour, int minute, int second, int nanoOfSecond);

- 추가 메소드

int    getHour()    시간
int    getMinute()    분
int    getSecond()    초
int    getNano()    나노초

 

 

3. LocalDateTime 클래스

- 컴퓨터 현재 날짜와 시간 정보(시간, 날짜 정보가 동시에 필요할때 사용.)

- 결과 : 2020-09-23T18:34:24.458

- 사용 방법 

LocalDateTime currentDateTime = LocalDateTime.now();  
LocalDateTime targetDateTime = LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond);

ZonedDateTime utcDateTime = ZonedDateTime.now(ZoneId.of("UTC"));
ZonedDateTime seoulDateTime = ZonedDateTime.now(ZoneId.of("Asia/Seoul"));

 

 

 

4. 날짜 / 시간 변환

1) LocalDate -> String

LocalDate.of(2020, 12, 12).format(DateTimeFormatter.BASIC_ISO_DATE); // 20201212

2) LocalDateTime -> String

LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 2020-09-23 01:42:24

3) LocalDateTime -> java.util.Date

Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()); //Thu Jul 26 01:00:30 KST 2020

4) LocalDate -> java.sql.Date

Date.valueOf(LocalDate.of(2015, 5, 5)); // 2020-07-26

5) LocalDateTime -> java.sql.Timestamp

Timestamp.valueOf(LocalDateTime.now()); // 2018-07-26 01:06:55.323

6) String -> LocalDate

LocalDate.parse("2002-05-09"); // 2002-05-09
LocalDate.parse("20081004", DateTimeFormatter.BASIC_ISO_DATE); // 2008-10-04

7) String -> LocalDateTime

LocalDateTime.parse("2007-12-03T10:15:30"); // 2007-12-03T10:15:30
LocalDateTime.parse("2010-11-25 12:30:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 2010-11-25T12:30

8) java.util.Date -> LocalDateTime

LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()); // 2018-07-26T01:16:46.755

9) java.sql.Date -> LocalDate

new Date(System.currentTimeMillis()).toLocalDate(); // 2018-07-26

10) java.sql.Timestamp -> LocalDateTime

new Timestamp(System.currentTimeMillis()).toLocalDateTime(); // 2018-07-26T01:20:07.364

11) LocalDateTime ->LocalDate

LocalDate.from(LocalDateTime.now()); // 2018-07-26

12) LocalDate -> LocalDateTime

LocalDate.now().atTime(2, 30); // 2018-07-26T02:30

 

 

 

 

 

 

<참고 블로그>

https://jeong-pro.tistory.com/163

 

JAVA에서 날짜,시간 제대로 사용하는 LocalDate, LocalTime, LocalDateTime (NTP 시간 서버에서 정확한 시간 ��

아직도 Calendar, Date 사용하니? 자바에서 아직도 Calendar.getInstance해서 시간/날짜를 표현하는 프로그래머가 있을까? 처음 공부할 때나 단순하게 표현해야할 때는 사용할 수 있지만 단점이 극명한 클

jeong-pro.tistory.com

(정아마추어님은 대단하시다....내가 부족한부분을 찾아서 공부하려면 이미 너무 잘정리를 해놓으셨어...)

 

 

<추가>

 - javascript Date() 관련 메소드

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Date

 

반응형
Comments