5

簡単な質問です。

分をより読みやすい形式に変換し、最上位桁のみを表示する、よりスマートで洗練された方法はありますか?

私は Android Studio の Java を使用しています。

public String MinutesToHumanReadable(Long minutes) {

...

}

すなわち

2 mins = "2 mins"
45 mins = "45 mins"
60 mins = ">1 hr"
85 mins = ">1 hr"
120 mins = ">2 hrs"
200 mins = ">3 hrs"
1500 mins = ">1 day"

私のコードは非常に扱いにくく、ずさんで、やや読みにくいものです。

public String MinutesToHumanReadable(long minutes) {
    String sReturn = "";

    if (minutes > 515600) {
        sReturn = "> 1 yr";

    } else if (minutes > 43200) {
        sReturn = (minutes / 43200) + " mths";

    } else if (minutes > 10080) {
        sReturn = (minutes / 10080) + " wks";

    } else if (minutes > 1440) {
        sReturn = (minutes / 1440) + " days";

    } else if (minutes > 60) {
        sReturn = (minutes / 60) + " hrs";

    } else {
        //<60
        sReturn = minutes + " mins";

    }

    return sReturn;
}

どうもありがとう、J

4

3 に答える 3

4

私はいくつかのダミーif/else if/elseステートメントを使用します:

public static String convert(int minutes) {
  if(minutes < 60) {
    return String.format("%d mins", minutes);
  } else if(minutes % 60 == 0) { // No minutes - i.e. not a fractional hour.
    return String.format("%d hrs", minutes/60);
  } else if(minutes < 1440) { //1 day = 1440 minutes
    return String.format("%d hrs, %d mins", minutes/60, minutes%60);
  } else {
    return String.format("%d days", minutes / 1440);
  }
}

サンプル出力

System.out.println(convert(24));   //=> 24 mins
System.out.println(convert(120));  //=> 2 hrs
System.out.println(convert(84));   //=> 1 hrs, 24 mins
System.out.println(convert(2880)); //=> 2 days
于 2013-10-28T13:59:33.883 に答える
1

多分これはあなたを助ける

private static final int MINUTES_PER_HOUR = 60;
private static final int MINUTES_PER_DAY = MINUTES_PER_HOUR * 24;

public String minutesToHumanReadable(long minutes) {
    if (minutes > MINUTES_PER_DAY) {
        return String.format("> %d days", minutes / MINUTES_PER_DAY);
    } else if (minutes > MINUTES_PER_HOUR) {
        return String.format("> %d hours", minutes / MINUTES_PER_HOUR);
    }

    return String.format("%d minutes", minutes);
}
于 2013-10-28T14:02:47.960 に答える