我们如何仅用 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")
因此,拆分后的值将是一个包含周期段的数组,从较大的周期到较小的周期。
数组的 Head 是您要查找的值。
slitted.head + "Ago."
*您应该根据您的区域设置更改拆分方法上的 REGEX 模式,或者您是否使用自定义格式化程序而不是默认格式化程序 (PeriodFormatterBuilder)
前任。数组(“4 年”、“2 个月”、“5 天”、“18 小时”、“15 分钟”、“10 秒”、“50 毫秒”)
显而易见的算法是测试年 > 0,在这种情况下你使用它,如果不测试月 > 0 等等。可能会有更优雅的东西,但它可以在不到 15 行代码中工作......