Java 约达时间的近似时间段

Java 约达时间的近似时间段,java,time,jodatime,Java,Time,Jodatime,我正在使用Joda库获取从给定时间戳起经过的时间段: public static String getTimePassedSince(Date initialTimestamp){ DateTime initDT = new DateTime(initialTimestamp.getTime()); DateTime now = new DateTime(); Period p = new Period(initDT, now);

我正在使用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
有没有办法让我得到大致的时间而不是确切的时间?例如,如果自
初始时间戳
以来已过了1分30秒,则它仅返回
1.5分钟
。类似地,如果一小时35分钟过去了,它将返回大约1.5小时,而不是1小时35分钟xy秒


我知道返回的字符串可以被解析和操作,但我正在寻找更复杂的东西。

我认为您需要为此创建自己的格式化程序,它查看句点并确定要格式化的粒度,例如63秒“1分钟”,或3小时48分钟“3小时”。听起来你只想报告最大的一个时间单位,而忽略更细粒度的时间单位。您需要定义舍入行为以及如何以天为单位呈现时间:“44天前”或“一个月前”或“1个月前和2周前”


我不知道有任何通用实用程序可以这样做,但我也没有找过。

看看。

3小时48分钟应该是4小时,因为已经过了3:30(或3.5)