1

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

SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ");

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

谁能给我一些想法?

4

4 回答 4

0

也检查一下:

    SimpleDateFormat dateFormatGmt = new SimpleDateFormat("dd:MM:yyyy");
    dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(dateFormatGmt.format(new Date()));
于 2013-10-28T10:46:02.030 回答
0

由于文档只显示最新版本,我无法找到是否SimpleDateFormat sdf = new SimpleDateFormat("ZZZZ");总是GMT-05:00在 Android 4.3 之前返回。

我能想到的最佳近似值是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);
}
于 2013-10-28T10:55:44.927 回答
0

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

DateFormat df = DateFormat.getTimeInstance();
df.setTimeZone(TimeZone.getTimeZone("gmt"));
String gmtTime = df.format(new Date());
于 2013-10-28T10:41:43.817 回答
0

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

由于 'ZZZZZ' 和 'ZZZZ' 被记录在一起,我假设行为与 4.0、4.1 和 4.2 中的预期一致

于 2015-05-21T06:07:54.810 回答