私はこのようなタイムスタンプ文字列があります:私は範囲を開始し、タイムスタンプ上記の範囲を終了しているものを手に入れることができるようにそれらをソートしたいタイムスタンプのリストから開始範囲と終了範囲を取得する方法は?
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
を。私は以下のようにしています:
これは私に上記のタイムスタンプのリストから開始と終了の範囲を与えます。これは正しい方法ですか、それとも良い方法がありますか?
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
すべてのタイムスタンプは、同じタイムゾーンではありません。アルファベット順にソートすると、時間順にソートされません。インスタンスを解析し、インスタンスをソートします(または、最小値と最大値を見つけてください:Collectionsクラスにもその方法があります)。 –
OffsetDateTimeは、これらの文字列に使用する正しいクラスです。 'OffsetDateTime'は比較可能で、主にタイムライン上のポイント、すなわちインスタント(そして第2にゾーンオフセット)によって注文するので、明示的に「インスタント」に変換する必要はありません。 Basil Bourqueの答えを見てください。 @JBNizet(私はもちろん、文字列が正しい順序を与えないのでソートすることに同意します) –
ソートされた順に最初と最後が必要な場合は、 'Collections.min()'と 'Collections.max ) 'Collections.sort()'ではなく 'タイムスタンプが多数ある場合は、これもより効率的になります。このトリックは、これまでに投稿された回答でも機能します。 –