ナノ秒精度のInstant
マイクロ秒またはナノ秒精度でタイムスタンプを取得する。
コード比較
✕ Java 8
// Millisecond precision only
long millis =
System.currentTimeMillis();
// 1708012345678
✓ Java 9+
// Microsecond/nanosecond precision Instant now = Instant.now(); // 2025-02-15T20:12:25.678901234Z long nanos = now.getNano();
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
より高い精度
ミリ秒ではなくマイクロ秒・ナノ秒単位のタイムスタンプ。
型安全
Instantは精度を内包するため、意味が曖昧なlongを使いません。
UTCベース
InstantはUTCに固定されており、タイムゾーンの混乱がありません。
旧来のアプローチ
ミリ秒
モダンなアプローチ
ナノ秒
JDKバージョン
9
難易度
中級
JDKサポート
ナノ秒精度のInstant
利用可能
JDK 9(2017年9月)以降、広く利用可能
仕組み
Java 9ではクロック解像度が改善され、Instant.now()はほとんどのプラットフォームでマイクロ秒精度(一部ではナノ秒)のタイムスタンプを取得できます。従来のcurrentTimeMillis()はミリ秒精度しかありませんでした。
関連ドキュメント