2014-03-31 134 views
4

在我的Android應用程序服務器將返回一些UTC日期格式爲(yyyy-MM-dd HH:mm:ss)24小時,我需要將這些時間轉換爲用戶的TimeZone for示例CSTIST如何將UTC時間轉換爲其他時區(「CST」,「IST」)

我做了下面的代碼,但我知道它是否正確,請協助我以正確的方式進行時區轉換。

我得到UTC日期爲JSON字符串轉換成用戶的時區格式和顯示Android的側

private static Date utcDate; 
private static DateFormat expireFormat = new SimpleDateFormat(
     "yyyy-MM-dd HH:mm:ss"); 

     try { 
      expireFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
      utcDate = expireFormat.parse("2014-04-01 10:32:00"); 
      System.out.println(TimeZone.getDefault().getID()); 
      expireFormat.setTimeZone(TimeZone.getTimeZone(TimeZone.getDefault().getID())); 
      System.out.println(expireFormat.format(utcDate)); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

    output of the code: 
    Asia/Calcutta 
    2014-04-01 16:02:00 
+0

TimeZone.getDefault()。getOffset(now.getTime()),現在是用戶的當前時間,應該給GMT設備的時區偏移量。 – mraviator

回答

4

總的做法是確定的,如果重新格式化字符串真的是你想要什麼得到。

有一些問題雖然

  1. SimpleDateFormat不是線程安全類。將其設置爲服務器內的靜態字段是一個問題!

  2. 與使用靜態字段來保存中間日期對象的#1相同。

  3. 是「CST」中國標準時間嗎?中部標準時間(美國還是澳大利亞)?古巴標準時間?三字母縮寫TimeZone是一般的壞消息。儘可能嘗試使用奧爾森名稱或別名。

  4. 這是服務器端還是android?如果它是一個服務器,那麼您可能會受益於新的用於DateTime處理的Java 8 API。

+0

請檢查我的更新代碼。而不是給予「CST」我使用時區獲取方法和轉換將在Android端完成。 –

相關問題