JodaTime PeriodFormat,只有1个字段的经过时间

时间:2012-04-13 11:42:05

标签: java date jodatime

如何只用一个字段显示经过的时间。

例如

  • 期间= 1年4个月和5天==>结果=“1年前”
  • 期间= 3个月5天==>结果=“3个月前”
  • 期间= 4小时5分钟==>结果=“4小时前”

所以我只想要最高的可用字段。

3 个答案:

答案 0 :(得分:2)

Joda-Time中没有方法可以执行此操作,因此您必须手动依次测试每个字段。

答案 1 :(得分:1)

这将起作用

val startDate = new DateTime(millis).withZone(dateTimeZone)
val endDate = new DateTime(dateTimeZone)

val period = new Period(startDate, endDate)

val localized = PeriodFormat.wordBased(localeLanguageCode).print(period)
val splitted = localized.split(",|and")

因此,分割值将是一个包含周期段的数组,从较大的周期到较低的周期。

数组的头部是您正在寻找的值。

slitted.head + "Ago."

*您应该根据您的区域设置更改拆分方法上的REGEX模式,或者您是否使用自定义格式化程序而不是默认格式化程序(PeriodFormatterBuilder)

实施例。阵列(" 4年"," 2个月"," 5天"," 18小时"," 15分钟&#34 ;," 10秒"," 50毫秒")

答案 2 :(得分:0)

明显的算法是测试年份> 0,在这种情况下你使用它,如果没有测试,如果月份> 0等 可能会有更优雅的东西,但这可以在不到15行的代码中工作......