SimpledateFormat为不同的Android版本返回不同的值

时间:2013-10-28 10:37:32

标签: android timezone simpledateformat

我在我的代码中使用了SimpleDateFormat,如下所示。

SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ");

我想将结果显示为GMT-05:00。我在Android 4.3中运行我的代码。它返回了与我预期相同的结果。但是,对于Android版本4.0,4.1和4.2,上面的代码行返回-05:00而不是GMT-05:00GMT丢失了)。我糊涂了。我已经阅读了Android的SimpleDateFormat

有人可以给我一些想法吗?

4 个答案:

答案 0 :(得分:0)

您可以使用DateFormats在任何时区将日期转换为字符串:

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

答案 1 :(得分:0)

另外检查一下:

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

答案 2 :(得分: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);
}

答案 3 :(得分:0)

我遇到了类似的问题,但是对于' ZZZZZ',我发现一些SimpleDateFormat修补程序仅在4.3+上添加:https://code.google.com/p/android/issues/detail?id=73209

自' ZZZZZ'和' ZZZZ'记录在一起,我假设行为是在4.0,4.1& 4.2