2013-01-17 45 views
0

我正在從提供時間戳的HH:mm:ss形式的Web服務中檢索數據我正在使用SimpleDateFormat將此字符串轉換爲日期對象,然後在需要時更改其時區並將其從24小時轉換爲12小時的時間。解析時間字符串和更改時區

問題:當時間被送到在上午12點它看起來像這樣00:00:00 所以12:05是00:05:00 當我得到他們看起來是這樣的結果。喂

22:00:0000:01:00

次檢索10:00 pm0:01 am

我一直在四處尋找,看看是否有一種方法可以修復它,但我覺得我需要做一個特例如果它在小時位置有0,則自己解析字符串。

任何幫助將不勝感激。

public String parseTime(String time) { 
    String mTime = null; 
    TimeZone thisTimeZone = TimeZone.getDefault(); 
    TimeZone ourTimeZone = TimeZone.getTimeZone("America/Los_Angeles"); 
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.US); 
    SimpleDateFormat sdfThisTimeZone = new SimpleDateFormat("K:mm:a", 
      Locale.getDefault()); 

    Date date = null; 
    sdfThisTimeZone.setTimeZone(thisTimeZone); 
    sdf.setTimeZone(ourTimeZone); 
    try { 
     date = sdf.parse(time); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    mTime = sdfThisTimeZone.format(date.getTime()); 
//**********************************New: Does Not Work******************************** 
      DecimalFormat nft = new DecimalFormat("00"); mTime = nft.format(mTime); 
//**********************************New ********************************************** 
    return mTime; 
} 

我已經嘗試使用DecimalFormat行,但我現在只是將其複製到代碼中,以查看它是否可行。不幸的是它讓我的應用程序崩潰我發佈的代碼是在一個異步任務內執行的,所以我不確定這是否有所作爲,但仍然感謝您的幫助。最終我會解決這個問題。但就目前而言,這是一個非常小的細節,只有在凌晨12點纔會發生1小時,我正在向更大的問題前進。如果任何人都可以闡明這一點,這將是非常棒的。

回答

0

字符串getConvertedDateTime(字符串DATETIME){

String convertedDateTime = dateTime; 

    if (convertedDateTime != null 

      && !convertedDateTime.equalsIgnoreCase("") 

      && !convertedDateTime.equalsIgnoreCase("null")) { 

     try { 

      SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 

      Calendar calendar = Calendar.getInstance(); 

      java.util.Date convertedDate = formatter 
        .parse(convertedDateTime); 
     formatter.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); 
     convertedDateTime = formatter.format(convertedDate.getTime()); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    return convertedDateTime; 
} 
+0

這正是我上面除了'convertedDate.getTime()'添加'的getTime()'功能不解決我的問題。我仍然在上午12點輸出'00:00:00' – doubleA

+0

試試這個 - DecimalFormat nft = new DecimalFormat(「00」); convertedDateTime = nft.format(convertedDateTime); –