繁体   English   中英

Joda-Time的大概时间段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM