2

完全なISO8601を実装していない1つのアプリケーションと通信し、タイムゾーンオフセットの形式+ HH:mmのみを受け入れる必要があります。

Androidは、SampleDateFormatの「z」でフォーマット+ HHmm(時間と分の間に「:」文字がない)のみを生成するようです。

コード例:

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 に答える