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);

顺便说一句,"HH:mm:ss"按原样使用h12 小时格式 (AM/PM) 和H24 小时格式 - 一个有趣的错误,

于 2013-01-05T08:04:14.457 回答
0

另一种解决方案:

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

如果您愿意,可以使用Joop Eggenprintf提到的相同方法。如果您想将其存储在另一个字符串中,您可以使用如下。

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