【问题标题】:DecimalFormat to format minutes to hoursDecimalFormat 将分钟格式化为小时
【发布时间】:2014-11-08 05:14:15
【问题描述】:

我有几分钟的时间,比如大约 900 分钟,我需要将 900 分钟转换为小时,这可以通过除以 60 来完成,但这必须使用 DecimalFormat 之类的东西来完成

DecimalFormat formatter = new DecimalFormat("xxxxxH");
System.out.println(formatter.format(900));

输出应该是15H

我需要将格式化程序传递给其他一些方法(用于在条形图中格式化 Y 轴)

【问题讨论】:

    标签: java decimalformat


    【解决方案1】:

    DecimalFormat 不会为您执行该数学运算。你可以使用printf

    int mins = 900;
    System.out.printf("%dH%n", mins / 60);
    

    String.format(String, Object...)

    int mins = 900;
    System.out.println(String.format("%dH", mins / 60));
    

    TimeUnit.convert(long, TimeUnit)点赞

    int mins = 900;
    System.out.println(String.format("%dH",
            TimeUnit.HOURS.convert(mins, TimeUnit.MINUTES)));
    

    全部三个输出

    15H
    

    【讨论】:

    • 我可以使用以上所有方法来获得所需的格式,但我需要将格式化程序传递给其他一些方法(用于在条形图中格式化 Y 轴)
    • @achuth 你是说你需要你自己的DecimalFormat 子类来为你做这件事,所以你可以将它传递给一些具有DecimalFormat 类型参数的方法吗?如果这就是您的意思,您可能应该在问题中指出这一点。
    【解决方案2】:

    我需要将格式化程序传递给其他一些方法(用于在条形图中格式化 Y 轴)

    我将把实现细节作为学习练习留给你,但一种直接的方法是创建你自己的 DecimalFormat 子类,它覆盖各种 format 方法,进行数学运算,并传递修改后的结果以通常的格式将数字移到基数。

    在实现这一点时,您的目标是让基础DecimalFormat 仍然尽可能多地完成工作。

    作为一个选项,您可以选择参数化除法因子而不是硬编码,例如60,这将使您有更好的机会在其他情况下重用您的新课程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多