2017-10-17 3 views
-3

Java 8을 사용 중이며객체로 변환하려는 .txt 파일에 문자열이 있습니다.Java 8을 사용하여 String을 LocalDateTime으로 변환합니다. DateTimeFormatter

String time1 = "2017-10-06T17:48:23.558"; 

DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss"); 
LocalDateTime alarmTime = LocalDateTime.parse(time1, formatter1); 

System.out.println(time1); 

이 나에게이 예외 제공 :

Exception in thread "main" java.time.format.DateTimeParseException: Text '2017-10-06T17:48:23.558' could not be parsed at index 2 
at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source) 
at java.time.format.DateTimeFormatter.parse(Unknown Source) 
at java.time.LocalDateTime.parse(Unknown Source) 

어떤 아이디어?

P.

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd.MM.yyyy. HH:mm:ss"); 
DateTime dt = formatter.parseDateTime(string); 

자바에서 8

편집을 작동하지 않습니다 :이 있습니다 내가 충분히 질문이 명확하지 않았다, 내 나쁜 :

을 내 .txt 파일에이 문자열이 그리고 그것을 클래스 객체로 저장하기 위해 LocalDateTime 객체로 변환해야하지만 테이블에 출력하려면 명시된 형식으로 변환해야합니다. "2017-10-06T17:48:23.558" 인 원시 형식으로 인쇄하고 싶지 않습니다. LocalDateTime로 구문 분석을 추가 형식없이 "10.06.2017. 17:48:23"

+2

완전히 잘못된 패턴을했습니다 ... – Phoenix

+0

날짜의 색인 '2'에 '아니오'가 있습니다.'패턴에서 알 수 있듯이 – A4L

+1

'DateTimeFormat.forPattern'은 Joda-Time이고'DateTimeFormatter.ofPattern'은 Java 8'java.time' API에서 가져온 것입니다. 어느 쪽을 사용 하시겠습니까? –

답변

1

출력을 원하는 형식 ("dd.MM.yyyy. HH:mm:ss"), 입력과 동일하지 않습니다이 같은 패턴을 사용하는 경우가 작동합니다 그래서 당신은 그것을 파싱하는데 사용할 수 없다.

이 특정 경우 입력은 ISO8601 format이며, 직접 구문 분석 할 수 있습니다. 그럼 당신은 당신이 원하는 형식으로 LocalDateTime 개체의 서식을 포맷터를 사용

String time1 = "2017-10-06T17:48:23.558"; 
// convert String to LocalDateTime 
LocalDateTime localDateTime = LocalDateTime.parse(time1); 
// parse it to a specified format 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss"); 
System.out.println(localDateTime.format(formatter)); 

출력은 다음과 같습니다

2017년 6월 10일.

17시 48분 23초

PS : 입력이 다른 형식으로했다 경우, 구문 분석 및 형식으로 다른 하나의 포맷을 사용해야합니다. Check the javadoc을 클릭하면 사용 가능한 모든 형식을 볼 수 있습니다.

+0

예,이 작품, 고마워, 그리고 내 첫 번째 게시물을 충분히 명확하게하지 못한 것에 대해 유감스럽게 생각합니다 ... 이 행은'System.out.println (localDateTime.format (formatter));'javafx에서 작동합니까? – mdenci

+0

@mdenci 실제로 format 메소드의 결과를'String'으로 설정하는 것이 낫습니다. –

1

사용 LocalDateTime.parse : 나는 이런 식으로 뭔가를 인쇄 할

jshell> java.time.LocalDateTime ldt = java.time.LocalDateTime.parse("2017-10-06T17:48:23.558"); 
ldt ==> 2017-10-06T17:48:23.558 
+0

이 문자열은 표준 [ISO 8601] (https://en.wikipedia.org/wiki/ISO_8601) 형식으로되어 있기 때문에 작동합니다. 이는 'LocalDateTime'입니다. 구문 분석 (...)'을 이해합니다. – Jesper

1

귀하의 날짜 포맷 패턴이 잘못되었습니다.

String date = "2016-08-16T10:15:30+08:00"; 

    ZonedDateTime result = ZonedDateTime.parse(date, DateTimeFormatter.ISO_DATE_TIME); 

    System.out.println("ZonedDateTime : " + result); 

    System.out.println("TimeZone : " + result.getZone()); 

    LocalDate localDate = result.toLocalDate(); 

    System.out.println("LocalDate : " + localDate); 
+0

진행중인 프로젝트에서 작업 예제를 게시했습니다. –

+0

좋아요, 편집 된 게시물은 작동하지만 이전에 게시 한 게시물은 실제로 작동하지 않았습니다. 하지만 여전히, 내가 뭘 찾고있는 건 아니지만 어쨌든, 아마도 나중에 필요합니다. – mdenci

0
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS"); 
관련 문제