ここで変更する点が 2 つあります。まずはフォーマット。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"); // This should work for you. Though I must say 6 "S" is not done. You won't get milliseconds for 6 precisions.
Date date = new Date();
String dateString = dateFormat.format(date); // You need to use "dateString" for your JSON
次に、フォーマットされた日付は、JSON に入力する必要があり、解析して に戻す必要はありませんDate
。ただしDate
、書式設定オプションはありません。SDF を使用して、必要な形式で日付の文字列表現のみを取得できます。
元:-
public static void main(String[] args) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX");
Date date = new Date();
String dateString = dateFormat.format(date); // You need to use "dateString" for your JSON
System.out.println(dateString); // Output
}
この出力は次のとおりです。
2013-09-16T15:39:16.000257+05:30
ミリ秒単位の 6 桁の精度は使用できません。Java 7 で SDF のドキュメントが表示されている場合は、次の内容を見つけることができます。
強調表示された例は必要なものですが、6 ミリ秒の精度では不可能です。したがって、6 Sを使用できますが、実際の 3 ミリ秒桁の前に 3 つの先行ゼロが追加されるだけです! これは、あなたの場合に可能な唯一の回避策です!
編集:-
AndroidのSimpleDateFormat
には が含まれていませんX
。代わりに提供しZ
ます。したがって、新しいフォーマット文字列は
yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ"); // For Android