tl; dr
Instant.now()
.toString()
2016-05-06T23:24:25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19:24:25.694
java.time
Java 8以降では、java.timeフレームワークがJava 8以降に組み込まれています。これらの新しいクラスは、面倒な古いjava.util.Date/.Calendarクラスに取って代わります。新しいクラスは非常に成功したJoda-Timeフレームワークに触発されたもので、後継として意図されており、概念は似ていますが再構築されています。JSR 310で定義されています。ThreeTen-Extraプロジェクトによって拡張されました。チュートリアルを参照してください。
java.util.DateとJoda-Timeの両方のミリ秒の精度(小数点以下3桁)に対して、java.timeはナノ秒の精度(小数点以下9桁)に対応していることに注意してください。したがって、小数点以下3桁のみを表示するようにフォーマットすると、データが非表示になる可能性があります。
データからマイクロ秒またはナノ秒を削除する場合は、切り捨てます。
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
java.timeクラスは、文字列の解析/生成時にデフォルトでISO 8601形式を使用します。Z
末尾のA はの略でZulu
、UTCを意味します。
アンはInstant
、最大の分解能でUTCでタイムライン上の瞬間を表しナノ秒。Java 8の現在の瞬間のキャプチャはミリ秒に制限されています。Java9の新しい実装では、コンピューターのハードウェアクロックの能力に応じて、最大でナノ秒をキャプチャします。
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23:24:25.694Z
T
真ん中のをスペースで置き換え、Z
を何も入れないで、目的の出力を取得します。
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23:24:25.694
オフセットやタイムゾーンを含める必要がないので、特定の地域に関係のない「現地」の日時を作成します。
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
ジョーダタイム
非常に成功したJoda-Timeライブラリは、java.timeフレームワークのインスピレーションでした。都合のよいときにjava.timeに移行することをお勧めします。
ISO 8601形式は、ミリ秒を含み、かつ、デフォルトでジョダタイム 2.4ライブラリ。
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
実行すると…
Now: 2013-11-26T20:25:12.014Z
また、必要に応じて、ミリ秒の端数を数値として要求することもできます。
int millisOfSecond = myDateTime.getMillisOfSecond ();