Programming/Java

LocalDateTime toString() 메서드 사용 시 주의해야 할 점(00초 사라짐)

Jan92 2022. 1. 20. 23:46

LocalDateTime의 toString() 메서드 사용 시 00초가 사라지는 경우

 

 

먼저 LocalDateTime은 java.time 패키지에 있는 시간을 다루는 클래스이며 jdk1.8부터 사용되었고 기존의 Date와 Calendar 클래스의 단점을 보완하기 위해서 나오게 되었습니다.

 

프로젝트 진행 중 LocalDateTime 타입의 값을 toString() 메서드로 문자열 형태로 가지고 와서 사용하는 과정에서 LocalDateTime의 기본 형태인 'yyyy-MM-ddTHH:mm:ss'에서 저장된 데이터의 마지막 ss 초 값이 00 일 경우에 값이 아예 출력되지 않고 'yyyy-MM-dd T HH:mm' 까지만 나오는 경우가 발생하였습니다.

 

ex) mariaDB에 저장된 DateTime 값 '2022-01-20 11:20:00' -> 가지고 와서 toString() '2022-01-20T11:20'

 

 

LocalDateTime toString()

원인을 찾기 위해서 LocalDateTime 클래스의 toString() 메서드를 확인해봤습니다.

 

'The format used will be the shortest that outputs the full value of the time where the omitted parts are implied to be zero'

대략 0으로 암시되는 부분을 생략하여 시간의 전체 값을 다음 중 가장 짧은 형식으로 출력한다는 뜻으로 파악됩니다.

 

 

String formatDate = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

따라서 00초일 경우에도 yyyy-MM-ddTHH:mm:ss 포맷을 가진 String 타입의 값을 얻고 싶다면 toString() 메서드가 아니라 위 코드처럼 DateTimeFormatter를 사용하여 변환하는 것이 좋습니다.

 

 

 

 

< 함께 보면 좋은 자료 >

 

Java 날짜와 문자열 LocalDateTime, String 변환하기

'LocalDateTime to String, String to LocalDateTime' 자바에서는 기존의 Calendar 클래스와 Date 클래스의 불편한 점을 보안하기 위해 JDK1.8부터 java.time API를 도입하였습니다. java.time 패키지에는 날짜와..

wildeveloperetrain.tistory.com

 

 

날짜와 시간을 다루는 LocalDate, LocalTime, LocalDateTime (java.time 패키지) 기본 개념

Java 날짜와 시간을 나타내는 Calendar class [Java] 날짜와 시간을 나타내는 Calender class 날짜와 시간은 어떤 프로젝트에서든 뺄 수 없는 데이터입니다. 개발을 하며 앞으로 계속 사용될 날짜와 시간에

wildeveloperetrain.tistory.com