2012-01-31 2 views
0

나는 내가 날짜로 구문 분석하는 데 필요한 다음 문자열이 있습니다안드로이드 날짜 구문 분석

2012-01-31T08:41:12.5462495+01:00 

지금 내가 다음 코드를 시도 작동하지 않습니다

public static String FORMAT_DATE_ISO = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"; 

public static Date fromISODateString(String isoDateString) throws Exception { 
    DateFormat f = new SimpleDateFormat(FORMAT_DATE_ISO); 
    f.setTimeZone(TimeZone.getTimeZone("Zulu")); 
    return f.parse(isoDateString); 
} 

을 나는 가정하고 그것의 시간대가 +0100과 같아야하고 제 경우에는 +01 : 00이되어야합니다.

어떻게 해결할 수 있습니까? 감사합니다. .

답변

2

두 가지 문제가 있습니다

  • 표준 시간대 지정
  • 내가 SimpleDateFormat에서 시간대 지정자 부분을 해결하는 쉬운 방법을 발견하지 않았습니다

당신의 초 정밀도를 그래서 문자열을 조작하는 것이 유혹 될 것입니다. 고정 길이이므로 최종 콜론을 제거하는 것이 어렵지 않습니다. 그런 다음 형식 문자열로

"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ" 

을 사용할 수 있습니다. docs에 따르면 Joda Time 콜론을 사용하는 시간대 오프셋을 처리하므로 다른 옵션입니다.

0

@Jon Skeet에게 형식 문자열을 보내 주셔서 감사합니다.

내가

isoDateString = isoDateString.replaceFirst("(.*):(..)", "$1$2"); 

를 사용하여 마지막 콜론을 대체하기 위해 관리가 그렇게 이것에 대한 작업 코드는 다음과 같습니다

public static String FORMAT_DATE_ISO = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"; 

public static Date fromISODateString(String isoDateString) throws Exception { 
     isoDateString = isoDateString.replaceFirst("(.*):(..)", "$1$2"); 
     DateFormat f = new SimpleDateFormat(FORMAT_DATE_ISO); 
     f.setTimeZone(TimeZone.getTimeZone("Zulu")); 
     return f.parse(isoDateString); 
    }