如何从时间戳列表中获取开始和结束范围?

How to get start and end range from list of timestamps?

我有一个这样的时间戳字符串:

2016-01-14T22:43:55Z
2016-01-15T00:04:50Z
2016-01-15T00:44:59+08:30
2016-01-15T01:25:35-05:00
2016-01-15T01:44:31+08:30
2016-01-15T02:22:45-05:00
2016-01-15T02:54:18-05:00
2016-01-15T03:53:26-05:00
2016-01-15T04:32:24-08:00
2016-01-15T06:31:32Z
2016-01-15T07:06:07-05:00

我想对它们进行排序,以便我可以从上面的时间戳中获取开始范围和结束范围。我这样做如下:

List<String> timestamp = new ArrayList<>();
// adding above string timestamp into this list
// now sort it
Collections.sort(timestamp);

这将给我上述时间戳列表的开始和结束范围。这是正确的方法还是有更好的方法?

timestamp.get(0); // start range
timestamp.get(timestamp.size() - 1); // end range

更新

所以我应该做如下的事情:

List<OffsetDateTime> timestamp = new ArrayList<>();
timestamp.add(OffsetDateTime.parse( "2016-01-15T00:44:59+08:30" ));
// add other timestamp string like above and then sort it
Collections.sort(timestamp);

timestamp.get(0); // start range
timestamp.get(timestamp.size() - 1); // end range

您必须使用比较器。 首先创建一个 class 并实现 Comparator。然后将 value1 和 value2 与您的选择进行比较。之后使用这个 class 到 Collections.sort.

此致,a.ayati

OffsetDateTime

将那些 ISO 8601 个字符串解析为 java.time.OffsetDateTime 个对象。

OffsetDateTime.parse( "2016-01-15T00:44:59+08:30" )

将这些日期时间对象添加到 Collection 并排序。您可能想要 List,例如 ArrayListSortedSet.

java.time 类 实施 compareTo 方法,以履行他们作为 Comparable 的合同。所以这些对象知道如何排序。

像这样:

List<OffsetDateTime> odts = new ArrayList<>();

OffsetDateTime odt = OffsetDateTime.parse( "2016-01-15T00:44:59+08:30" ) ;
odts.add( odt );
… // Parse remaining ISO 8601 strings, adding each new OffsetDateTime object to collection.

Collections.sort( odts );