私は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 hours
1時間35分xy秒の代わりに戻ります。
返された文字列を解析および操作できることはわかっていますが、もっと洗練されたものを探しています。
これには独自のフォーマッタを作成する必要があると思います。これは、期間を調べて、フォーマットする粒度を63秒「1分」または3時間48分に決定します。「3時間」 。最大の時間単位を1つだけ報告し、より細かい単位は無視したいようです。丸めの動作と、時間を日単位でレンダリングする方法を定義する必要があります:「44日前」または「1か月前」または「1か月と2週間前」。
私はこれを行う一般的なユーティリティを知りませんが、私はそれを探していません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加