有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中hh:mm:ss格式的时间毫秒

在我的代码中,我生成的时间戳值是长毫秒。我想把它转换成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);

共 (3) 个答案

  1. # 1 楼答案

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

    顺便说一下,使用"HH:mm:ss"作为h用于12小时格式(AM/PM)和H用于24小时格式-一个有趣的错误

  2. # 2 楼答案

    另一个解决方案:

    sdf1.setTimeZone(TimeZone.getTimeZone("etc/UTC"));
    System.out.println(sdf1.format(new Date(durationInMillis)));
    
  3. # 3 楼答案

    如果你想printf,你可以使用与Joop Eggen提到的相同的方法。如果要将其存储在另一个字符串中,可以按如下所示使用

    String output = String.format("%02d:%02d:%02d%n", hours, minutes, seconds);