2014-04-01 2 views
3

DB에서 얻은 시간대로 형식 타임 스탬프 문자열을 구문 분석하려고합니다. 다음과 같이 문자열은 다음과 같습니다자바에서 타임 존을 가진 타임 스탬프를 파싱 하시겠습니까?

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSZ"); 

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
    Date d1 = mdyFormat.parse("2014-04-01 15:19:49.31146+05:30"); 

    String mdx = sdf.format(d1); 

    System.out.println(mdx); 

문제는, 내가 오류 말하는 얻을 :

Exception in thread "main" java.text.ParseException: Unparseable date: "2014-04-01 15:19:49.31146+05:30" 
    at java.text.DateFormat.parse(DateFormat.java:357) 
    at com.karthik.Timestampvalidate.main(Timestampvalidate.java:31) 

사람이이 문제를 해결하는 방법을 알고 있나요?

답변

8

당신은 Z 대신 X를 사용해야합니다 :

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSX"); 

더 많은 정보를 원하시면 the javadoc를 참조하십시오.

참고 : Java 7 이상에서만 사용 가능합니다.

+0

고맙습니다! 그 일. 나는 이전 버전의 문서를보고 있었다고 생각한다. – Karthik

4

Java 8에서 새로운 JSR 310 날짜/시간 API를 사용하면 XXX 형식을 사용하여 시간대를 구문 분석 할 수 있습니다. 콜론으로 구분 된 특정 오프셋을 사용하려면 세 개의 X이 필요합니다.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSXXX"); 
TemporalAccessor dateTime = formatter.parse("2014-04-01 15:19:49.31146+05:30"); 
// returns: {OffsetSeconds=19800},ISO resolved to 2014-04-01T15:19:49.311460 
관련 문제