프로그래밍 언어/JAVA

Java 문자열에서 날짜 형식 변경

Rateye 2021. 7. 19. 10:05
728x90
반응형

 

질문 : Java 문자열에서 날짜 형식 변경

날짜를 나타내는 String

String date_s = "2011-01-18 00:00:00.0";

Date 로 변환하여 YYYY-MM-DD 형식으로 출력하고 싶습니다.

2011-01-18

이것을 어떻게 할 수 있습니까?

좋아, 아래에서 검색 한 답변을 기반으로 여기에 시도한 것이 있습니다.

String date_s = " 2011-01-18 00:00:00.0"; 
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); 
Date date = dt.parse(date_s); 
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));

그러나 원하는 2011-01-18 02011-00-1 을 출력합니다. 내가 도대체 뭘 잘못하고있는 겁니까?

답변

사용 LocalDateTime#parse() (또는 ZonedDateTime#parse() 문자열이 시간대 부분을 포함하는 일 경우) 구문 분석 String 에 특정 패턴으로 LocalDateTime .

String oldstring = "2011-01-18 00:00:00.0";
LocalDateTime datetime = LocalDateTime.parse(oldstring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));

LocalDateTime#format() (또는 ZonedDateTime#format() )을 사용하여 LocalDateTime 을 특정 패턴 String

String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(newstring); // 2011-01-18

또는 아직 Java 8을 사용하지 않는 경우 SimpleDateFormat#parse() 를 사용하여 특정 패턴 String Date 로 구문 분석합니다.

String oldstring = "2011-01-18 00:00:00.0";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(oldstring);

SimpleDateFormat#format() 을 사용하여 Date 를 특정 패턴 String

String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(newstring); // 2011-01-18

업데이트 : 실패한 시도에 따라 패턴은 대소 문자를 구분 합니다. 개별 부분이 나타내는java.text.SimpleDateFormat javadoc을 읽으십시오. 예를 들어 M 은 월, m 은 분입니다. 또한 연도는 5 yyyyy yyyy 존재합니다. 위에 게시 한 코드 조각을 자세히 살펴보십시오.

출처 : https://stackoverflow.com/questions/4772425/change-date-format-in-a-java-string
728x90
반응형