Java格式小时和分钟

时间:2018-05-18 20:57:17

标签: java time format duration minute

我需要格式化我的时间字符串,例如:

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分钟。但我不知道如何追加“hrs”和“mins”。要求不使用任何库。

如果您以前做过类似的事情,请随时提供帮助。非常感谢!

5 个答案:

答案 0 :(得分:5)

因为,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 40minsSimpleDateFormat格式化日期/时间值,它不会处理持续时间

答案 1 :(得分:1)

int minutes = 160;

int h = minutes / 60;
int m = minutes % 60;

String.format("%d hr %d mins",h,m); // output : 2 hr 40 mins

答案 2 :(得分:-1)

获取您正在制作的字符串,并按照分隔值的任何字符将其拆分,即''或':'

然后做

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

答案 3 :(得分:-1)

试试

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

有一份很好的文档https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html 来自doc:

  

“可以使用单引号(')引用文本以避免解释。”

答案 4 :(得分:-1)

另一种简单的方法可能就是这样:

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

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

    return hours + "hrs " + minutes + "mins.";
}