2

我需要与一个没有实现完整 ISO 8601 的应用程序进行通信,并且只接受 +HH:mm 格式的时区偏移。

Android 似乎只生成格式 +HHmm(小时和分钟之间没有 ':' 字符)和 SampleDateFormat 中的 'z'。

代码示例:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String str = String.format(Locale.US, "%s", sdf.format(new Date(0)));

生成:1970-01-01T00:00+0000

我想生成:1970-01-01T00:00+00:00

是否有任何简单的方法可以在不编写代码来操作字符串的情况下产生所需的输出?

谢谢,路易斯

4

1 回答 1

1

我认为最简单的方法是操作字符串。

a) SimpleDateFormat 不支持您需要的内容。

b) SimpleDateFormat 类中的 appendNumericTimeZone 方法是私有的。所以,你不能覆盖它。

2)您可以创建自己的格式化程序(实现 java.text.DataFormat)。但是,这将比字符串操作更麻烦。

顺便提一句。我在查看 SimpleDateFormat 源代码时发现的有趣的东西。有一些代码几乎可以生成您需要的内容(它添加到末尾“GMT+XX:XX”)。但是,仅当您在格式中指定“Z”并且系统找不到当前时区的时区名称时,才会调用此代码。

于 2012-09-17T15:19:32.643 回答