我需要格式化我的时间字符串,例如:
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分钟。但我不知道如何追加“hrs”和“mins”。要求不使用任何库。
如果您以前做过类似的事情,请随时提供帮助。非常感谢!
答案 0 :(得分:5)
因为,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
。 SimpleDateFormat
格式化日期/时间值,它不会处理持续时间
答案 1 :(得分:1)
int minutes = 160;
int h = minutes / 60;
int m = minutes % 60;
String.format("%d hr %d mins",h,m); // output : 2 hr 40 mins
答案 2 :(得分:-1)
获取您正在制作的字符串,并按照分隔值的任何字符将其拆分,即''或':'
然后做
String[] results = result.split(' ');
result = results[0] + " hrs " + results[1] + " minutes ";
答案 3 :(得分:-1)
试试
sdf = new SimpleDateFormat("HH 'hrs' mm 'mins'");
有一份很好的文档https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html 来自doc:
“可以使用单引号(')引用文本以避免解释。”
答案 4 :(得分:-1)
另一种简单的方法可能就是这样:
public static String formatDuration(String minute){
int minutes = Integer.parseInt(minute);
int hours = minutes / 60;
minutes = minutes % 60;
return hours + "hrs " + minutes + "mins.";
}