Java format hour and min

后端 未结 4 1295
梦毁少年i
梦毁少年i 2020-12-11 09:36

I need to format my time string such as this:

int time = 160;

Here\'s my sample code:

public static String formatDuration(         


        
相关标签:
4条回答
  • 2020-12-11 10:14

    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."

    0 讨论(0)
  • 2020-12-11 10:21
    int minutes = 160;
    
    int h = minutes / 60;
    int m = minutes % 60;
    
    String.format("%d hr %d mins",h,m); // output : 2 hr 40 mins
    
    0 讨论(0)
  • 2020-12-11 10:25

    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.";
    }
    
    0 讨论(0)
  • 2020-12-11 10:37

    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

    0 讨论(0)
提交回复
热议问题