I need to format my time string such as this:
int time = 160;
Here\'s my sample code:
public static String formatDuration(
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."
int minutes = 160;
int h = minutes / 60;
int m = minutes % 60;
String.format("%d hr %d mins",h,m); // output : 2 hr 40 mins
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.";
}
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