0

私のコードでは、長いミリ秒のタイムスタンプ値を生成しています。これを HH:mm:ss(600000 から 00:10:00) に変換したいので、hh:mm:ss 形式で差分を表示したい

String strstart = "8:30:00";
String strend = "8:40:00";

SimpleDateFormat sdf1 = new SimpleDateFormat("hh:mm:ss");
try {
    Date date1 = sdf1.parse(strstart);

    Date date2 = sdf1.parse(strend);

    long durationInMillis = date2.getTime() - date1.getTime();

    System.out.println("durationInMillis---->" + durationInMillis);

} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

私は以下のコードを使用し、出力は0:10:0次のようになりますが、次のような出力が必要です00:10:00

int seconds = (int) (durationInMillis / 1000) % 60 ;
int minutes = (int) ((durationInMillis / (1000*60)) % 60);
int hours   = (int) ((durationInMillis / (1000*60*60)) % 24);

System.out.println(hours+":"+minutes+":"+seconds);
4

3 に答える 3

2
System.out.printf("%02d:%02d:%02d%n", hours, minutes, seconds);

ちなみに、12 時間制 (AM/PM) と 24 時間制はそのまま使用"HH:mm:ss"してください - 興味深いバグです。hH

于 2013-01-05T08:04:14.457 に答える
0

必要に応じて、 JoopEggenprintfが述べたものと同じものを使用できます。同じものを別の文字列に保存したい場合は、以下のように使用できます。

String output = String.format("%02d:%02d:%02d%n", hours, minutes, seconds);
于 2013-01-05T08:11:00.113 に答える
0

別の解決策:

sdf1.setTimeZone(TimeZone.getTimeZone("etc/UTC"));
System.out.println(sdf1.format(new Date(durationInMillis)));
于 2013-01-05T08:15:09.327 に答える