一尘不染

如何使用Joda-Time计算从现在开始经过的时间?

algorithm

我需要计算 从一个特定日期到现在为止经过时间 ,并以与StackOverflow问题相同的格式显示它,即:

15s ago
2min ago
2hours ago
2days ago
25th Dec 08

您知道如何使用Java Joda-Time
实现它吗?是否有已经实现它的辅助方法,还是我应该自己编写算法?


阅读 291

收藏
2020-07-28

共1个答案

一尘不染

要使用JodaTime计算经过的时间,请使用Period。要将经过的时间格式化为所需的人类表示形式,可以使用PeriodFormatter来构建PeriodFormatterBuilder

这是一个启动示例:

DateTime myBirthDate = new DateTime(1978, 3, 26, 12, 35, 0, 0);
DateTime now = new DateTime();
Period period = new Period(myBirthDate, now);

PeriodFormatter formatter = new PeriodFormatterBuilder()
    .appendSeconds().appendSuffix(" seconds ago\n")
    .appendMinutes().appendSuffix(" minutes ago\n")
    .appendHours().appendSuffix(" hours ago\n")
    .appendDays().appendSuffix(" days ago\n")
    .appendWeeks().appendSuffix(" weeks ago\n")
    .appendMonths().appendSuffix(" months ago\n")
    .appendYears().appendSuffix(" years ago\n")
    .printZeroNever()
    .toFormatter();

String elapsed = formatter.print(period);
System.out.println(elapsed);

现在打印

3秒前
51分钟前
7小时前
6天前
10个月前
31年前

(咳嗽,老咳嗽)您会发现我也考虑了几个月和几年,并将其配置为在零值时忽略这些值。

2020-07-28