Поскольку вы упоминаете в своем вопросе, что у вас уже есть ArrayList
из Strings
, и показать, что строки являются все даты, которые уже отформатированные в ISO8601, ваша задача очень проста: просто сортировать ArrayList как есть ,
То, что one of the many benefits of ISO8601!
Материал из Википедии:
Значения даты и времени организуются из наиболее к наименее значимым: год, месяц (или неделю), день, час, минута, секунда, и доли секунды. Таким образом, лексикографический порядок представления соответствует хронологическому порядку, за исключением представлений о датах с отрицательными годами. Это позволяет естественным образом сортировать даты, например, файловыми системами.
Более подробно:
List<String> dateStrings = Arrays.asList(
"2011-07-18T10:39:31.855Z",
"2012-09-18T10:19:31.855Z",
"2011-07-18T10:39:31.055Z",
"1903-12-01T00:39:31Z",
);
Arrays.sort(dateStrings);
// now dateStrings is sorted by date.
Снова идея здесь заключается в том, что вам не нужно преобразовать строки в даты, чтобы сделать вид.
В качестве альтернативы, если ваш список содержит фактические объекты Date
, вы также можете просто позвонить Arrays.sort
, и ваш список будет отсортирован должным образом, так как даты сопоставимы на Java. Но ваш вопрос задал вопрос о строках и строках в ISO8601, поэтому, если бы это было важной частью вашей проблемы, вы могли бы также воспользоваться преимуществами этого формата. TL; DR вам не нужен формат даты для сортировки.
Что такое ISO8601 и как я могу сортировать в этом формате? –
Добавленные ссылки и более подробное описание к моему ответу. –