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时会发生什么?

以上内容将显示26hrs 40mins,而不是打印2hrs 40minsSimpleDateFormat格式化日期/时间值,它不处理持续时间

int minutes = 160;
int h = minutes / 60;
int m = minutes % 60;
String.format("%d hr %d mins",h,m); // output : 2 hr 40 mins

试试

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

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

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

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

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

最新更新