2012-04-16 95 views
1

我在解析RSS提要中的標記時出現問題。Android從RSS XML提要解析pubDate標記

格式是這樣的:星期一,2012年4月16日16點42分30秒+0000

我創建了一個功能parseDate該做的伎倆,但事實是它解析使用Locale.US日期,它返回日期但使用美國語言環境,因此它返回時間+2小時。如果我沒有提供Locale.US參數,我得到一個ParseException。

如何才能完成正確的解析,以便提供的日期對任何本地?

這裏的功能:

public String parseDate (String dateraw){ 
     String returndate; 

     try {String format = "EEE, dd MMM yyyy kk:mm:ss Z"; 
     SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss z",Locale.US); 
     Date formatedDate = sdf.parse(dateraw); 

     Calendar c= Calendar.getInstance(); 
     c.setTime(formatedDate); 



     returndate=""+c.get(Calendar.DAY_OF_MONTH)+"/"+c.get(Calendar.MONTH)+"/"+c.get(Calendar.YEAR)+" "+c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE); 
      return returndate; 
     } catch (ParseException e) { 
      e.printStackTrace(); 
      // TODO Auto-generated catch block 
      return "NO DATE AVAILABLE"; 

     } 
    } 

回答

0

你的代碼工作正常。日期被解析並且不依賴於時區。 嘗試打印當前的時區或日曆時區,看看是否正確:

 //...    
     Calendar c = Calendar.getInstance(); 
     c.setTime(formatedDate); 
     Log.i(TAG, c.getTimeZone().getID()); 
     Log.i(TAG, TimeZone.getDefault().getID()); 
     //...