我需要计算 从一个特定日期到现在为止经过 的 时间 ,并以与StackOverflow问题相同的格式显示它,即:
15s ago 2min ago 2hours ago 2days ago 25th Dec 08
您知道如何使用Java Joda-Time 库实现它吗?是否有已经实现它的辅助方法,还是我应该自己编写算法?
要使用JodaTime计算经过的时间,请使用Period。要将经过的时间格式化为所需的人类表示形式,可以使用PeriodFormatter来构建PeriodFormatterBuilder。
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年前
(咳嗽,老咳嗽)您会发现我也考虑了几个月和几年,并将其配置为在零值时忽略这些值。