0

日付形式を次のようにする方法がよくわかりません: 2013-09-03T06:19:57.802Z 日付をこの形式にする必要がある API にアクセスしています。そのため、フォーマットが間違っていると、内部サーバー エラーが発生します。これまでに次のことを行いました。

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US);
Date date = new Date();
String dateToday = ISO8601DATEFORMAT.format(date);

私はこれを手に入れています。2013-09-03T14:28:11+0800

何か案は?ありがとう!

4

2 に答える 2

1

このようなフォーマットが必要だと思います

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
于 2013-09-03T06:45:23.837 に答える
1

Zリテラル文字としてではなく、フォーマット文字列でタイムゾーン指定子として使用していますZ。1 つの簡単な方法は次のとおりです。

  • 形式のタイム ゾーンを UTC に設定します
  • エスケープZ

したがって、次のようになります。

SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'",
                                                  Locale.US);
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = new Date();
String dateToday = isoFormat.format(date);

実際、オフセットが 0 の場合は +00 の代わりに a が使用されるため、 をエスケープする必要はありません。重要な部分は、フォーマッタでタイム ゾーンを設定することです。をエスケープするかどうかは、どのアプローチが最も読みやすいかによって異なります。ZZZ

もう 1 つの方法は、 Joda Timeを使用することです。Joda Timeは、一般的にはるかにクリーンな日付/時刻 API であり、ISO フォーマットが組み込まれています :)

于 2013-09-03T06:40:52.793 に答える