15

Java では、エポックからの時間を秒単位およびナノ秒単位で次の形式で出力するにはどうすればよいですか。

java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

私の入力は次のとおりです。

long mnSeconds;
long mnNanoseconds;

2 つの合計はエポックからの経過時間1970-01-01 00:00:00.0です。

4

6 に答える 6

24

これを使って1000で割ります

long epoch = System.currentTimeMillis();

System.out.println("Epoch : " + (epoch / 1000));
于 2012-08-08T18:53:14.697 に答える
9

あなたはこれを行うことができます

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));
}
于 2012-08-08T18:52:47.443 に答える
1

java.util.Dateクラスには、エポックミリ秒を受け入れるコンストラクターがあります。

Java docを確認し、それを利用してみてください。

于 2012-08-08T18:50:45.447 に答える
1

mnSeconds と mnNanoseconds の値に少し依存しますが、そのようなフォーマッター (ミリ秒の精度を持つ) で行う必要があるのは、java.util.Date を作成することだけです。mnNanoseconds が mnSeconds の上にあるナノ秒数である場合、次のようなものであると想定します

Date d = new Date(mnSeconds*1000+mnNanosecods/1000000)

次に、印刷する前にフォーマッタでフォーマットする必要があります。

于 2012-08-08T18:54:27.650 に答える
0

使用できます

new java.util.Date(mnSeconds);

次に、SimpleDateFormatを使用して出力をフォーマットします。

ナノ秒は Date ではサポートされていません。ナノ秒を手動で追加するか、何らかのフレームワークを使用する必要があります (ありますか?)。

于 2012-08-08T18:52:24.983 に答える