Java format hour and min

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-10 04:28:11

问题


I need to format my time string such as this:

int time = 160;

Here's my sample code:

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";
}

I need to display it as 2hrs 40mins. But I don't have a clue how to append the "hrs" and "mins". The requirement is not to use any library.

If you've done something like this in the past, feel free to help out. Thanks a bunch!


回答1:


Since, it's 2018, you really should be making use of the Date/Time libraries introduced in 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);

Which outputs...

2hrs 40mins

Why use something like this? Apart of generally been a better API, what happens when minutes equals something like 1600?

Instead of printing 2hrs 40mins, the above will display 26hrs 40mins. SimpleDateFormat formats date/time values, it doesn't deal with duration




回答2:


int minutes = 160;

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

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



回答3:


Just try

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

There is a good documentation https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html From the doc:

"Text can be quoted using single quotes (') to avoid interpretation."




回答4:


Another simple approach could be something along the lines:

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

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

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


来源:https://stackoverflow.com/questions/50419165/java-format-hour-and-min

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!