Формат Java час и мин - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно отформатировать мою временную строку, например:

int time = 160;

Вот мой пример кода:

public static String formatDuration(String minute) {
    String formattedMinute = null;
    SimpleDateFormat sdf = new SimpleDateFormat("mm");
    try {
        Date dt = sdf.parse(minute);
        sdf = new SimpleDateFormat("HH mm");
        formattedMinute = sdf.format(dt);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return formattedMinute;
//        int minutes = 120;
//        int h = minutes / 60 + Integer.parseInt(minute);
//        int m = minutes % 60 + Integer.parseInt(minute);
//        return h + "hr " + m + "mins";
}

Мне нужно отобразить его как 2 часа 40 минут.Но я понятия не имею, как добавить "часы" и "минуты".Требование не использовать какую-либо библиотеку.

Если вы делали что-то подобное в прошлом, не стесняйтесь помочь.Большое спасибо!

Ответы [ 4 ]

0 голосов
/ 19 мая 2018

Поскольку сейчас 2018 год, вам действительно следует использовать библиотеки даты / времени, представленные в Java 8

String minutes = "160";
Duration duration = Duration.ofMinutes(Long.parseLong(minutes));

long hours = duration.toHours();
long mins = duration.minusHours(hours).toMinutes();

// Or if you're lucky enough to be using Java 9+
//String formatted = String.format("%dhrs %02dmins", duration.toHours(), duration.toMinutesPart());
String formatted = String.format("%dhrs %02dmins", hours, mins);
System.out.println(formatted);

Какие выходные данные ...

2hrs 40mins

Зачем использовать что-токак это?Помимо общего лучшего API, что происходит, когда minutes равен чему-то вроде 1600?

Вместо вывода 2hrs 40mins, выше будет отображаться 26hrs 40mins.SimpleDateFormat форматирует значения даты / времени, не имеет отношения к продолжительности

0 голосов
/ 19 мая 2018

Просто попробуйте

sdf = new SimpleDateFormat("HH 'hrs' mm 'mins'");

Есть хорошая документация https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html Из документа:

"Текст можно заключать в кавычки (') дляизбегайте толкований. "

0 голосов
/ 19 мая 2018

Другим простым подходом может быть что-то вроде:

public static String formatDuration(String minute){
    int minutes = Integer.parseInt(minute);

    int hours = minutes / 60;
    minutes = minutes % 60;

    return hours + "hrs " + minutes + "mins.";
}
0 голосов
/ 19 мая 2018

Получите строку, которую вы делаете, и разделите ее на любой символ, разделяющий значения, то есть '' или ':'

Затем выполните

String[] results = result.split(' ');
result = results[0] + " hrs " + results[1] + " minutes ";
...