2012-11-07 7 views
4

나는 웹 서비스를 사용하고, 브라질의 도시 플로리 아노 폴리스에 대해 나는 다음 날짜 얻을 :Java에서 모호한 시간대로 날짜와 시간을 파싱하려면 어떻게해야합니까?

2012년 11월 6일 (화) 오후 5:30 LST 이제

시간대 "LST"는에 문제를 만듭니다 SimpleDateFormat의 파서 :

// Date to parse 
String dateString = "Tue, 06 Nov 2012 5:30 pm LST"; 

// This parser works with other timezones 
SimpleDateFormat LONG_DATE = new SimpleDateFormat("EEE, d MMM yyyy h:mm a zzz"); 

// Here it throws a ParseException 
Date date = LONG_DATE.parse(dateString); 

내가 시간대 구문 분석하기 어려울 수 있다는 것을 알고. 너는 무엇을 제안 하는가?

+3

당신은 Joda 시간 또는 대신 네 편지 시간대를 사용할 수 있습니다. 많은 세 문자 시간대는 여러 의미를 가지고 있습니다. LST는 Lunar Standard Time, Local Sidereal Time (라트비아에서 사용됨) 또는 Local Solar Time을 의미 할 수 있습니다. –

+0

피터 맞습니다. 조다 타임조차도 이런 종류의 타임 존을 파싱하는 것을 포기합니다 ... –

+1

당신은'parse (dateString.replace ("LST", "BRST"));' –

답변

0

나의 현재 해결 방법은 시도 감사 :

// Date to parse 
String dateString = "Tue, 06 Nov 2012 5:30 pm LST"; 

// This parser works with some timezones but fails with ambiguous ones... 
DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy h:mm a zzz"); 

Date date = null; 
try { 
    // Try to parse normally 
    date = dateFormat.parse(dateString); 
} catch (ParseException e) { 
    // Failed, try to parse with a GMT timezone as a workaround. 
    // Replace the last 3 characters with "GMT" 
    dateString = dateString.replaceFirst("...$", "GMT"); 
    // Parse again 
    date = dateFormat.parse(dateString); 
} 
2

DateFormat gmtFormat = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"); 

TimeZone gmtTime = TimeZone.getTimeZone("GMT-02:00"); 
gmtFormat.setTimeZone(gmtTime); 

System.out.println("Brazil :: " + gmtFormat.format(new Date())); 
+0

왜 그리니치 표준이 아닌 GMT-02 : 00을 넣을까요? –

+0

또한 시도해 보았지만 여전히 ParseException을 throw합니다 ... –

+0

@erasmospunk : GMT-02 : 00이 브라질의 표준 시간대를 지정하기 때문입니다. 시간대에 대한 자세한 내용은이 링크를 참조하십시오. [TimeZone Explained] (http://en.wikipedia.org/wiki/Time_zone) –

관련 문제