2013-10-28 86 views
1

我在我的代碼中使用了SimpleDateFormat,如下所示。SimpledateFormat爲不同的Android版本返回不同的值

SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ"); 

我想顯示結果爲GMT-05:00。我在Android 4.3中運行我的代碼。它返回了與我預期相同的結果。但是,上述代碼行返回-05:00而不是GMT-05:00,適用於Android版本4.0,4.1和4.2(缺少GMT)。我很困惑。我已經閱讀了Android的SimpleDateFormat

任何人都可以給我一些想法嗎?

回答

0

由於文件只顯示最新的版本,我找不到是否在Android 4.3之前總是返回SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ");GMT-05:00

我能想到的最佳近似值是SimpleDateFormat sdf = new SimpleDateFormat("'GMT'Z", Locale.US);明確添加GMT的時間格式,但時間格式不含冒號(例如GMT-0500)。


編輯:如果你能保證在4.1和4.2,您的代碼返回-05:00,那麼我認爲你可以添加版本檢查,並決定哪些SimpleDateFormat將被使用。

if (Build.VERSION.SDK_INT >= 18) { 
    SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ", Locale.US); 
} else { 
    SimpleDateFormat sdf = new SimpleDateFormat("'GMT'ZZZZ", Locale.US); 
} 
+0

嗨@antimo,我現在在我的代碼中使用相同的邏輯。無論如何感謝您的建議。這很奇怪。 :d – Ibungo

0

您可以使用DateFormats到日期轉換爲字符串,在任何時區:

DateFormat df = DateFormat.getTimeInstance(); 
df.setTimeZone(TimeZone.getTimeZone("gmt")); 
String gmtTime = df.format(new Date()); 
+0

感謝您的建議@ ling.s – Ibungo

0

檢查了這一點也是:

SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy"); 
    dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT")); 
    System.out.println(dateFormatGmt.format(new Date())); 
+0

感謝您的回覆。它並沒有解決我的問題。 – Ibungo

0

我碰到了類似的問題,但「ZZZZZ」,我發現,僅加入在4.3以上版本的一些SimpleDateFormat的修正:https://code.google.com/p/android/issues/detail?id=73209

由於「ZZZZZ」和「ZZZZ」被記錄在案在一起,我假設行爲如預期的4.0,4.1 & 4.2