图书馆在Java中的漂亮打印时段只给出了最重要的字段

时间:2012-09-25 08:41:42

标签: java date grails groovy

我想将时间段格式化为英语和其他语言like Joda Time does

但是我想要一个简单的方法来列出最重要的一两个字段,例如“2年零3个月”或“5天”,而不必编写代码来处理这个问题。 Joda Time的问题在于它为您提供“2年,3个月和5天”的输出,除非您编写代码。

Pretty Time之类的图书馆完全符合我的要求,但仅用于与现在的时间比较,如“3个月前”。我只想要“3个月”。

当然,必须有一个像漂亮时间一样的库,但是通用持续时间?

我特意使用Grails / Groovy,但普通的Java解决方案同样可以接受。

2 个答案:

答案 0 :(得分:1)

为什么你不能用Joda Time写一点代码?我遇到了类似的问题,我用这样的实用方法解决了这个问题:

DateTime dt = new DateTime(); // Now
DateTime plusDuration = dt.plus(new Duration(110376000000L)); // Now plus three years and a half

// Define and calculate the interval of time
Interval interval = new Interval(dt.getMillis(), plusDuration.getMillis());

// Parse the interval to period using the proper PeriodType
Period period = interval.toPeriod(PeriodType.yearMonthDayTime());

// Define the period formatter for pretty printing the period
PeriodFormatter pf = new PeriodFormatterBuilder()
        .appendYears().appendSuffix("y ", "y ")
        .appendMonths().appendSuffix("m", "m ").appendDays()
        .appendSuffix("d ", "d ").appendHours()
        .appendSuffix("h ", "h ").appendMinutes()
        .appendSuffix("m ", "m ").appendSeconds()
        .appendSuffix("s ", "s ").toFormatter();

// Print the period using the previously created period formatter
System.out.println(pf.print(period).trim());

也许这不是你想要的,但我希望它有所帮助。

问候。

答案 1 :(得分:-1)

这是一个很好的图书馆,可以满足您的要求:http://www.ocpsoft.org/prettytime/