2009-10-12 5 views
3

일부 XML 파일로 작성된 타임 스탬프를 구문 분석하려고합니다. 대부분 시간 기록은 2009-07-22-07 : 00과 비슷하지만 때로는 2009-07-22Z 또는 2009-07-22z과 같은 것을 찾을 수 있습니다. 이 Z를 해석하는 방법과 구문을 분석하는 방법을 알려주세요. 이 z 또는 Z는 시간대와 관련이 있습니다. 일반적인 타임 스탬프처럼 구문 분석 할 수있는 해결 방법은 무엇입니까?이 타임 스탬프를 해석하는 방법은 무엇입니까?

답변

7

가 FVU의 대답에 추가하려면 는 : 자바는 불행하게도 어떤 구문 분석하는 기본 방법 (또는 형식 ISO8601 날짜 및 시간 형식을 가지고 있지 않으며, 더욱 불행하게도 java.text.SimpleDateFormat와 ISO8601 날짜를 구문 분석 (쉽게) 할 수 없습니다

합니다.

잘 알려진 인기 Joda Time 라이브러리는 ISO8601 날짜와 시간에 대한 좋은 지원을 가지고

편집 :. 자바 5 이후, 구문 분석 할 수있는 표준 API의 클래스 및 형식의 날짜와 시간은 표준에있다 XML 문서에서 자주 사용되는 형식. 날짜를 구문 분석하려면 :

import java.util.Calendar; 
import java.util.Date; 
import javax.xml.datatype.DatatypeFactory; 
import javax.xml.datatype.XMLGregorianCalendar; 

// ... 

String dateString = "..."; // wherever you get this from 
XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(dateString); 

Calendar cal = xcal.toGregorianCalendar(); 
Date date = cal.getTime(); 

마찬가지로 날짜를 문자열로 포맷하는 방법이 있습니다. 자세한 내용은 해당 클래스의 API 설명서를 참조하십시오.

+1

그가 말한 것. 그냥 Joda 시간을 사용하면 몇 시간 안에 위의 포스터에 감사 할 것입니다. – Gaurav

+0

자세한 솔루션을 주셔서 감사합니다 – Ram

+0

그것은 "정적이 아닌 메서드 newXMLGregorianCalendar (java.lang.String) 정적 컨텍스트에서 참조 할 수 없습니다"고 말합니다. 죄송합니다. Java에 대한 초보자입니다. 이 주변의 작업은 무엇입니까? – Ram

5

Z은 줄루를 의미합니다. 정확합니다. 시간대를 나타냅니다. 구체적으로는 UTC입니다.

+0

빠른 답변을 주셔서 대단히 감사합니다. – Ram

5

정확합니다. 후행 문자는 시간대를 나타냅니다.

Z는 "줄 루어"표준 시간대를 나타내며 이는 UTC (또는 GMT) 표준 시간대의 약식입니다.

후미 + X 또는 -X가 나타날 수도 있습니다. 이것은 타임 스탬프의 GMT 오프셋을 참조합니다. 예 : 2002-05-30+06:00은 GMT + 6 시간 0 분을 나타냅니다.

1

XMLISO8601 시간 형식을 사용하므로 표준은 XML에서 모든 시간을 검색 할 수있는 첫 번째 장소입니다.

+1

몇 가지 닉픽. 1) ISO-8601을 기반으로 날짜를 지정하는 XML 스키마입니다. 기본 XML 사양 (및 DOM 및 파서)에는 데이터 형식에 대한 개념이 없습니다. 2) XML 스키마의 시간 및 지속 시간 유형은 ISO-8601만을 기반으로합니다. XML 스키마 스펙을 자세히 읽으면 미묘한 차이가 있음을 알 수 있습니다. –

+1

@Stephen - 사실, 당신 말이 맞습니다. 이러한 편차에 대한 개요는 http://www.w3.org/TR/xmlschema-2/#isoformats를 참조하십시오. – fvu

관련 문제