1

人の話し方の時間帯を印刷するためのライブラリはありますか? つまり、正確な時間単位で指定された期間を、次のようにある程度不正確な「音声」期間に変換する必要があります。

  • 360日→「1年」、
  • 32日→「1ヶ月」、
  • 385日→1年1ヶ月」

JodaTime は、「ゼロ」期間の部分をすべて切り捨てることでこれに取り組みますが、それでも日を月に変えることさえできません。

    PeriodFormatterBuilder builder = new PeriodFormatterBuilder().
        appendYears().appendSuffix(" year(s) ").
        appendMonths().appendSuffix(" month(s) ").
        appendDays().appendSuffix(" day(s)");


    MutablePeriod almostOneYear = new MutablePeriod(0, 0, 0, 360, 0, 0, 0, 0);

    StringBuffer durationInWords = new StringBuffer();
    builder.toPrinter().printTo(durationInWords, almostOneYear, Locale.ENGLISH);

    System.out.println(durationInWords.toString());

「360日」を生成し、「nか月m日」(n、m - 「標準」年が何であるかに応じて)でさえありません。もしかして私の使い方が悪いのでしょうか?

4

1 に答える 1

1

そのためのライブラリがあるとは思わないでください。次のような単純な関数を作成してみませんか。

  public static String toHumanFormat(int totalDays){
    int years = totalDays / 356;
    int months = (totalDays % 356) / 30;
    int days = totalDays % 356 % 30;
    return MessageFormat.format("{0,choice,0#|1#1 year|1<{0} years} " +
            "{1,choice,0#|1#1 month|1<{1} months} " +
            "{2,choice,0#|1#1 day|1<{2} days}",
            years, months, days).trim();
  }
于 2012-06-01T15:01:12.670 に答える