我有一个Joda持续时间对象列表。我想把它们转换成一个字符串列表,这样字符串就可以被人类识别,并且这个列表可以按字典排序。数据范围在任何地方,从5分钟到一周。我想出了以下几种选择:
是否有用于此目的的标准文本表示时间,不会让用户感到惊讶?如果是这样的话,是否有一个标准函数知道如何生成这个文本表示?
发布于 2015-12-15 15:34:07
关于您的时间范围从分钟到星期,我建议您应用替代持续时间格式的ISO-8601。该标准明确地用于提供按词典排序的表示形式。Joda-Time在这里有一些支持:
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 ddThh:mm:ss”的形式并不是真正的ISO。如果您阅读原始ISO-8601-论文(4.4.3.3节),则只提到日历部分的四种替代形式:
因此,Joda-Time在这里提供的是一项不基于ISO标准的发明,但可能对您的目的很方便。
https://stackoverflow.com/questions/34292109
复制相似问题