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行代码中工作…