Покажите формат XX: 00 в JAVA - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу показать число в формате XX: 00 на Java. Как я могу это сделать?

Пример: int номер = 12; шоу 12:00.

double i = 12;
show 12:00

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Отображение двойного числа

Если 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);

Теперь результат такой же, как указано выше.

0 голосов
/ 28 апреля 2018
double i = 12;
String.format("%.0f:00", i); // returns 12.00
...