java - 显示格式XX :00 in JAVA

标签 java number-formatting

我想在 Java 中显示 XX:00 格式的数字。我该怎么做?

例如:int 数字 = 12; 演出时间 12:00。

double i = 12;
show 12:00

最佳答案

显示双数

如果 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 又四分之三,打印出来的 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);

现在的结果和上面一样。

关于java - 显示格式XX :00 in JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50072318/

相关文章:

java - IBM Worklight 版本 6.1.0,在 Win 7 上带有嵌入式 WL 开发服务器,一致的 Android 构建错误

java - 订阅多个 MQTT 主题

r - 如何读取以逗号作为小数点分隔符的数字?

jQuery:将文本转换为整数(输入值)时出现问题

javascript - 带有自定义分隔符的 Number.toLocaleString()

java - 如何从sqlite中的其他表引用数组的blob列

Java 文本和颜色(0, 0, 0, 0)

java - 为什么 BeforeTransaction 和 AfterTransaction 方法没有触发?

asp.net-mvc-3 - 如何在MVC3中使用超过2位小数格式化十进制

java - 在java中计算科学数字