2012-11-25T23:50:56.193+01:00
日付を使用するようにフォーマットするにはどうすればよいSimpleDateFormat
ですか?
私が次Z
のような形式で使用する場合
yyyy-MM-dd'T'hh:mm:ss.SSSZ
その後、それは表示されます
2013-03-06T11:49:05.490+0100
2012-11-25T23:50:56.193+01:00
日付を使用するようにフォーマットするにはどうすればよいSimpleDateFormat
ですか?
私が次Z
のような形式で使用する場合
yyyy-MM-dd'T'hh:mm:ss.SSSZ
その後、それは表示されます
2013-03-06T11:49:05.490+0100
Java 7+01:00
のSimpleDateFormat()またはJodaのDateTimeFormat( )のようにフォーマットされたタイムゾーンオフセットを取得できます。yyyy-MM-dd'T'HH:mm:ss.SSSXXX
yyyy-MM-dd'T'HH:mm:ss.SSSZZ
これが2017年の回答です。できる方法がある場合は(あります)、SimpleDateFormat
船外にあるような古いクラスを投げて、で最新のより便利なクラスを使用してjava.time
ください。特に、目的の形式は2012-11-25T23:50:56.193+01:00
ISO-8601に準拠しているため、新しいクラスですぐに使用できます。次を使用するだけOffsetDateTime.toString()
です。
OffsetDateTime time = OffsetDateTime.now();
System.out.println(time.toString());
これは次のようなものを印刷します
2017-05-10T16:14:20.407+02:00
ただし、注意したい場合とそうでない場合がありますが、オブジェクトの精度を印刷するのに必要な数の小数点以下3桁のグループを秒に印刷しOffsetDateTime
ます。どうやら私のコンピュータでは、「今」の精度はミリ秒(小数点以下3桁の秒)です。
たとえば、昔ながらのオブジェクトがある場合、レガシーメソッドの呼び出しから取得した場合、最初に行うことは、最新のクラスの1つであるにDate
変換することをお勧めします。Instant
そこから、要件に応じて他の変換を簡単に行うことができます。
Date now = new Date();
OffsetDateTime time = now.toInstant().atZone(ZoneId.systemDefault()).toOffsetDateTime();
System.out.println(time.toString());
私は本当に必要以上の変換を行っています。atZone(ZoneId.systemDefault())
を生成しましたがZonedDateTime
、toString()
必ずしも希望どおりの形式になるとは限りません。ただし、簡単にフォーマットできます。
ZonedDateTime time = now.toInstant().atZone(ZoneId.systemDefault());
System.out.println(time.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));