我有一个Joda Duration个对象的列表。我想将它们转换为字符串列表,以便字符串对人类清晰,并且列表可以按字典顺序排序。数据范围从5分钟到一周不等。我想到了以下几个选项:
是否有用于此目的的持续时间的标准文本表示不会让用户感到惊讶?如果有,是否有一个知道如何生成这种文本表示的标准函数?
答案 0 :(得分:1)
关于您有几分钟到几周的事实,我建议您应用替代持续时间格式ISO-8601 。该标准明确开发用于提供按字典顺序排序的表示。 Joda-Time在这里有some support:
Duration d = new Duration(100000000L); // in milliseconds
Period p = d.toPeriodFrom(new DateTime(), PeriodType.yearWeekDayTime());
PeriodFormatter f = ISOPeriodFormat.alternateExtendedWithWeeks();
String s = f.print(p);
System.out.println(s);
// P0000-W00-01T03:46:40 (one day, 3 hours, 46 minutes and 40 secs)
也许年份部分仍然会打扰你,但这只是ISO表示,并且总是将值0000与您的持续时间值相对应。
更新和小修正:
严格来说,只是澄清表格" Pyyyy-Www-ddThh:mm:ss"不是真的ISO。如果您阅读原始的ISO-8601论文(第4.4.3.3节),那么日历部分只提到四种替代形式:
所以Joda-Time在这里提供的不是基于ISO标准的发明,而是可能方便您的目的。