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

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

例如

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

所以我只想要最高的领域。

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

这会奏效

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)

防爆。 arrays(“4年”,“2个月”,“5天”,“18小时”,“15分钟”,“10秒”,“50毫秒”)

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