真夜中から 15 マイクロ秒のブロックで Java の utc 時間をマイクロ秒単位で抽出する方法はありますか?
つまり、1 マイクロ秒から 15 マイクロ秒までの時間が同じタイミングで表されます。
真夜中から 15 マイクロ秒のブロックで Java の utc 時間をマイクロ秒単位で抽出する方法はありますか?
つまり、1 マイクロ秒から 15 マイクロ秒までの時間が同じタイミングで表されます。
唯一の問題は、時間の解像度です。java.util.Date
一般に、Java はまたはを介してミリ秒の精度をサポートしますSystem.currentTimeMillis()
。より高い精度が必要な場合は、System.nanoTime()
うまくいくかもしれません。
しかし、これは別の問題をもたらします。これはnanoTime()
カレンダーとは関係ありません。これは、ナノ秒の精度で増え続けるカウンターです。私が考えることができる唯一の回避策は次のとおりです。
System.nanoTime()
真夜中に値を決定し、それを呼び出しますS
。これには問題があるかもしれませんが、真夜中まで待つ必要はありません。簡単な計算で十分です。
以下を計算します。
(System.nanoTime() - S) / 15000
値が の場合0
、同じ 15 マイクロ秒の範囲にいます
JVM とあなたのプログラムが実際にそのような短いタイミングを利用できると確信していますか?
マイクロ秒単位で時間を取得する方法については、この質問を参照してください。マイクロ秒の日付タイミングは、Java では十分にサポートされていません。
Java はミリ秒単位の日付をサポートしており、一部のシステムでは、 を介してナノ秒のシステム時刻を取得できますSystem.nanoTime()
。システムがナノ秒の解像度をサポートしている場合、ナノ秒の数値を変換して 15 マイクロ秒のブロックに丸める関数を作成するのはかなり簡単です。