6

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

例如

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

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

4

3 回答 3

2

Joda-Time 中没有方法可以做到这一点,因此您必须手动依次测试每个字段。

于 2012-04-19T10:11:03.020 回答
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")

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

数组的 Head 是您要查找的值。

slitted.head + "Ago."

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

前任。数组(“4 年”、“2 个月”、“5 天”、“18 小时”、“15 分钟”、“10 秒”、“50 毫秒”)

于 2014-11-04T18:32:50.457 回答
0

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

于 2012-04-13T23:43:14.277 回答