我需要获取一个代表秒的长值并将其作为可读字符串返回。我已经完成了这一点,但是我的问题是我需要它只返回所使用的单位。例如,如果我输入“1209600”秒,即14天,我需要它只返回“14天”,而不是“14天0小时0分0秒”。如果我输入“1209601”秒,即14天1秒,我需要它只返回“14天1秒”等。
除了多个 if 语句检查 0 值之外,最好的方法是什么?这是我到目前为止所拥有的:
public String getDurationString(long duration) {
long days = TimeUnit.SECONDS.toDays(duration);
duration -= TimeUnit.DAYS.toSeconds(days);
long hours = TimeUnit.SECONDS.toHours(duration);
duration -= TimeUnit.HOURS.toSeconds(hours);
long minutes = TimeUnit.SECONDS.toMinutes(duration);
duration -= TimeUnit.MINUTES.toSeconds(minutes);
long seconds = TimeUnit.SECONDS.toSeconds(duration);
return String.format("%d day(s) %d hr(s) %d min(s) %d sec(s)", days, hours, minutes, seconds);
}
最佳答案
作为建议,我将给出对每个时间单位使用 if 条件以及诸如字符串生成器之类的东西来创建最终消息。
示例:
public static void main(String[] args) {
long duration = 1209622L;
long days = TimeUnit.SECONDS.toDays(duration);
duration -= TimeUnit.DAYS.toSeconds(days);
long hours = TimeUnit.SECONDS.toHours(duration);
duration -= TimeUnit.HOURS.toSeconds(hours);
long minutes = TimeUnit.SECONDS.toMinutes(duration);
duration -= TimeUnit.MINUTES.toSeconds(minutes);
long seconds = TimeUnit.SECONDS.toSeconds(duration);
StringBuilder msg = new StringBuilder( );
if (days!=0) {
msg.append( days+" day(s)");
}
if (hours!=0) {
msg.append( hours+" hours(s)");
}
if (minutes!=0) {
msg.append( minutes+" minutes(s)");
}
if (seconds!=0) {
msg.append( seconds+" seconds(s)");
}
System.out.println(msg.toString());
}
关于java - 将秒转换为可读的时间字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36527567/