在JAVA中显示格式XX:00

时间:2018-04-28 02:37:01

标签: java number-formatting

我想在Java中以格式XX:00显示一个数字。我该怎么办?

Ex:int number = 12;     显示12:00。

double i = 12;
show 12:00

2 个答案:

答案 0 :(得分:1)

显示双号

如果12.0是要用冒号作为小数分隔符打印的小数:

    double i = 12;
    DecimalFormatSymbols dfs = new DecimalFormatSymbols();
    dfs.setDecimalSeparator(':');
    NumberFormat format = new DecimalFormat("00.00", dfs);
    System.out.println(format.format(i));

输出:

  

12:00

如果i为12.75而不是12,则也会打印分数:

  

12:75

它舍入到最接近的数字,带有两位小数,因此12.756将打印为12:76

以小时和分钟显示持续时间

如果你的12:00表示一段时间,一小时和几分钟的持续时间,我们想要一些不同的东西,因为一小时有60分钟,而不是100.这里是 Java 9 和更高版本:

    long totalMinutes = (long) (i * TimeUnit.HOURS.toMinutes(1));
    Duration dur = Duration.ofMinutes(totalMinutes);
    System.out.format("%02d:%02d%n", dur.toHours(), dur.toMinutesPart());

打印

  

12:00

或在12.75案例中:

  

12:45

12.75等于12和4个季度,45印刷也等于四分之三个小时,所以这就是我们想要的。它向下舍入,所以即使12.759等于12小时45分32.4秒,它仍然打印为12:45

Java 8及更早版本: 我使用的toMinutesPart方法是在Java 9中引入的。在Java 8(及更早版本)中,您仍然可以使用Duration类,但它不太有利,所以您也可能没有它:

    int hours = (int) i;
    long minutesOnly = totalMinutes - TimeUnit.HOURS.toMinutes(hours);
    System.out.format("%02d:%02d%n", hours, minutesOnly);

现在结果与上面相同。

答案 1 :(得分:0)

double i = 12;
String.format("%.0f:00", i); // returns 12.00