Joda-Timeでの概算期間

職人:

私はJodaライブラリを使用して、特定のタイムスタンプ以降の期間を取得しています。

public static String getTimePassedSince(Date initialTimestamp){

        DateTime initDT = new DateTime(initialTimestamp.getTime());
        DateTime now = new DateTime();
        Period p = new Period(initDT, now);

        PeriodFormatter formatter = new PeriodFormatterBuilder()
            .appendYears().appendSuffix(" year, ", " years, ")
            .appendMonths().appendSuffix(" month, ", " months, ")
            .appendDays().appendSuffix(" day, ", " days, ")
            .appendHours().appendSuffix(" hour, ", " hours, ")
            .appendMinutes().appendSuffix(" minute, ", " minutes, ")
            .appendSeconds().appendSuffix(" second, ", " seconds")
            .printZeroNever()
            .toFormatter();

        return formatter.print(p);
    }

この関数は、指定されたタイムスタンプの正確な期間文字列を返します。例えば:

3 minutes, 23 seconds
1 hour, 30 minutes, 57 seconds
1 day, 23 hours, 21 minutes, 19 seconds

正確ではなくおおよその時間を取得する方法はありますか?たとえば、から1分30秒が経過したinitialTimestamp場合、のみが返されます1.5 minutes同様に、1時間35分が経過すると、about 1.5 hours1時間35分xy秒の代わりに戻ります

返された文字列を解析および操作できることはわかっていますが、もっと洗練されたものを探しています。

Dov Wasserman:

これには独自のフォーマッタを作成する必要があると思います。これは、期間を調べて、フォーマットする粒度を63秒「1分」または3時間48分に決定します。「3時間」 。最大の時間単位を1つだけ報告し、より細かい単位は無視したいようです。丸めの動作と、時間を日単位でレンダリングする方法を定義する必要があります:「44日前」または「1か月前」または「1か月と2週間前」。

私はこれを行う一般的なユーティリティを知りませんが、私はそれを探していません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事