2016-08-22 2 views
0

2016-07-22T00 : 00 : 00.000-05 : 00의 시간 표현에 맞는 패턴으로 DateTimeFormatter 객체를 만들려고합니다. 위의 입력 문자열과 함께 DateTimeFormatter 클래스를 사용하여 DateTime 객체를 만들려고합니다.올바른 DateTimeFormatter 패턴을 만드는 방법

나는 아래의 표현의 많은 다른 버전을 시도했지만 현재 "-05 : 00"시간대 조각에 갇히지하고 내 JUnit 테스트 케이스에 오류를 받고 있어요 :

java.lang.IllegalArgumentException: Invalid format: "2016-07-22T00:00:00.000-05:00" is malformed at "-05:00" 

내가 사용하고 현재 형식 패턴은 다음과 같습니다 나는 또한 시도

yyyy-MM-dd'T'HH:mm:ss.SSSZ 

:

yyyy-MM-dd'T'HH:mm:ss.SSSTZD 
yyyy-MM-dd'T'HH:mm:ss.SSSZZZ 
yyyy-MM-dd'T'HH:mm:ss.SSSz 
yyyy-MM-dd'T'HH:mm:ss.SSSzzz 
yyyy-MM-dd'T'HH:mm:ss.SSS'TZD' 

Java 7에서 실행 중이므로 문제가 발생하는지 확실하지 않습니다.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); 
Date date = new Date(); 
System.out.println(sdf.format(date)); 

출력했다 : 나는이 코드를 테스트 한 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

:

답변

-1

이 API의 javadoc에서는 패턴을 설명

2016-08-22T18:34:26.604-03:00 
+0

이 작동하지만 String 대신 끝나는 대신 DateTime 개체를 만들려고합니다. – user007

1

당신이, 당신이 원하는 것을 달성하기 위해 DateTimeFormatter 클래스에서 정적 메서드 "ofPattern"을 활용할 수 있습니다. 이 메서드는 DateTimeFormatter 객체를 반환합니다.

그리고 tnas 같이, 다음과 같은 날짜 및 시간 형식 문자열을 사용할 수 있습니다

"YYYY-MM-dd'T'HH : mm : ss.SSSXXX"

DateTimeFormatter test = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); 

I을 코드를 테스트하고 컴파일합니다.

+0

XXX는 유효한 패턴 구성 요소가 아니기 때문에 컴파일되지만 작동하지 않습니다. – user007

+0

나는 tnas가 컴파일을 게시 한 코드를 혼란스럽게 여긴다고 믿으며 따라서 yyyy-MM-dd'T'HH : mm : ss.SSSXXX가 유효한 날짜 및 시간 형식 문자열임을 증명했습니다. –

+0

컴파일 및 실행은 두 가지 다른 작업입니다. 코드 입력은 문자열 입력이 필요한 .ofPattern() 메서드에 문자열을 입력하기 때문에 컴파일됩니다. "Hello World"를 입력해도 코드는 계속 컴파일됩니다. 그렇다고해서 코드가 제대로 실행될 수있는 것은 아닙니다. – user007

관련 문제