将秒转换为可读时间字符串

时间:2016-04-10 08:30:27

标签: java

我需要一个表示秒的长值并将其作为可读字符串返回。我已经完成了这个,但是我的要点是我需要它才能返回使用过的单位。例如,如果我输入" 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);
}

1 个答案:

答案 0 :(得分:0)

此退货声明将满足您的要求,只需将其替换

 return String.format("%s %s  %s  %s ",
                days!=0?days+" day(s)" :"",
                hours!=0?hours+" hr(s)":"",
                minutes!=0?minutes+" min(s)":"",
                seconds!=0?seconds+" sec(s)":"");