我想将时间段格式化为英语和其他语言like Joda Time does。
但是我想要一个简单的方法来列出最重要的一两个字段,例如“2年零3个月”或“5天”,而不必编写代码来处理这个问题。 Joda Time的问题在于它为您提供“2年,3个月和5天”的输出,除非您编写代码。
像Pretty Time之类的图书馆完全符合我的要求,但仅用于与现在的时间比较,如“3个月前”。我只想要“3个月”。
当然,必须有一个像漂亮时间一样的库,但是通用持续时间?
我特意使用Grails / Groovy,但普通的Java解决方案同样可以接受。
答案 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/