Java格式小时和分钟

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

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

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

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

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

然后做

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

试一试

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

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

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

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

 public static String formatDuration(String minute){ int minutes = Integer.parseInt(minute); int hours = minutes / 60; minutes = minutes % 60; return hours + "hrs " + minutes + "mins."; }