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
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java에서 2 * (i * i)가 2 * i * i보다 빠른 이유 (0) | 2021.07.29 |
---|---|
Java에서 YYYY-MM-DD HH : MI : Sec.Millisecond 형식으로 현재 시간을 얻는 방법 (0) | 2021.07.28 |
Java에서 .NET의 NotImplementedException과 같은 것 (0) | 2021.07.16 |
javadoc에서 메소드를 참조하는 방법 (0) | 2021.07.15 |
Java에서 HTTP 요청을 보내는 방법 (0) | 2021.07.15 |