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() 메서드를 확인해봤습니다.
'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를 사용하여 변환하는 것이 좋습니다.
< 함께 보면 좋은 자료 >
'Programming > Java' 카테고리의 다른 글
Windows10 Java8 32bit 설치하기 jdk8(x86) (0) | 2022.02.03 |
---|---|
자바 소켓 통신(Socket)을 사용하는 이유와 동작 원리 및 코드 (2) | 2022.01.25 |
전문통신이란? Java 전문통신(Fixed Length Format) 문자열 길이 맞추는 메서드 (2) | 2022.01.19 |
Java 대출 이자 계산기 구현하기 (원금균등, 원리금균등, 만기일시) (0) | 2022.01.13 |
Java 날짜와 문자열 LocalDateTime, String 변환하기 (0) | 2022.01.08 |