[英]Approximate Time Period with Joda-Time
我正在使用Joda库获取自给定时间戳记以来的时间段:
public static String getTimePassedSince(Date initialTimestamp){
DateTime initDT = new DateTime(initialTimestamp.getTime());
DateTime now = new DateTime();
Period p = new Period(initDT, now);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendYears().appendSuffix(" year, ", " years, ")
.appendMonths().appendSuffix(" month, ", " months, ")
.appendDays().appendSuffix(" day, ", " days, ")
.appendHours().appendSuffix(" hour, ", " hours, ")
.appendMinutes().appendSuffix(" minute, ", " minutes, ")
.appendSeconds().appendSuffix(" second, ", " seconds")
.printZeroNever()
.toFormatter();
return formatter.print(p);
}
该函数返回给定时间戳的确切时间段字符串。 例如:
3 minutes, 23 seconds
1 hour, 30 minutes, 57 seconds
1 day, 23 hours, 21 minutes, 19 seconds
有什么方法可以获取近似时间而不是精确时间? 例如,如果从initialTimestamp
过去了1分30秒,则它仅返回1.5 minutes
。 同样,如果经过一个小时35分钟,则返回about 1.5 hours
而不是1小时35分钟xy秒。
我知道返回的字符串可以解析和处理,但是我正在寻找更复杂的东西。
看一下PrettyTime 。
我认为您需要为此创建自己的格式化程序,该格式化程序将查看时间段并确定要格式化的粒度,例如63秒“ 1分钟”或3小时48分钟:“ 3小时” 。 在我看来,您只想报告一个最大的时间单位,而忽略更精细的时间单位。 您需要定义舍入行为以及如何以天为单位呈现时间:“ 44天前”或“一个月前”或“ 1个月零2周前”。
我不知道有任何通用的工具可以做到这一点,但是我也没有寻找任何一种。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.