Java では、エポックからの時間を秒単位およびナノ秒単位で次の形式で出力するにはどうすればよいですか。
java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
私の入力は次のとおりです。
long mnSeconds;
long mnNanoseconds;
2 つの合計はエポックからの経過時間1970-01-01 00:00:00.0
です。
Java では、エポックからの時間を秒単位およびナノ秒単位で次の形式で出力するにはどうすればよいですか。
java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
私の入力は次のとおりです。
long mnSeconds;
long mnNanoseconds;
2 つの合計はエポックからの経過時間1970-01-01 00:00:00.0
です。
これを使って1000で割ります
long epoch = System.currentTimeMillis();
System.out.println("Epoch : " + (epoch / 1000));
あなたはこれを行うことができます
public static String format(long mnSeconds, long mnNanoseconds) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
return sdf.format(new Date(mnSeconds*1000))
+ String.format("%09d", mnNanoseconds);
}
例えば
2012-08-08 19:52:21.123456789
ミリ秒以上必要ない場合は、次のことができます
public static String format(long mnSeconds, long mnNanoseconds) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
return sdf.format(new Date(mnSeconds*1000 + mnNanoseconds/1000000));
}
java.util.Date
クラスには、エポックミリ秒を受け入れるコンストラクターがあります。
Java docを確認し、それを利用してみてください。
mnSeconds と mnNanoseconds の値に少し依存しますが、そのようなフォーマッター (ミリ秒の精度を持つ) で行う必要があるのは、java.util.Date を作成することだけです。mnNanoseconds が mnSeconds の上にあるナノ秒数である場合、次のようなものであると想定します
Date d = new Date(mnSeconds*1000+mnNanosecods/1000000)
次に、印刷する前にフォーマッタでフォーマットする必要があります。
使用できます
new java.util.Date(mnSeconds);
次に、SimpleDateFormatを使用して出力をフォーマットします。
ナノ秒は Date ではサポートされていません。ナノ秒を手動で追加するか、何らかのフレームワークを使用する必要があります (ありますか?)。