Это зависит от того, смешиваете вы форматы или нет.
В любом определенном формате, например yyyy-mm-dd
или yyyy-Www-d
, ISO 8601 создан для лексикографической сортировки (кроме отрицательных лет).
Со страницы википедии ISO 8601 :
Значения даты и времени упорядочены от самого значительного до наименее значимого: год, месяц (или неделя), день, час, минута, секунда и доля секунды. Таким образом, лексикографический порядок представления соответствует хронологическому порядку, за исключением представлений даты, включающих отрицательные годы. Это позволяет естественным образом сортировать даты, например, по файловым системам.
Это означает, что сортировка строк должна работать нормально.
Только если вы смешаете форматы, это не будет работать. Если это так, перед сравнением вам нужно будет конвертировать в определенный формат. Под этим я подразумеваю что-то вроде преобразования всех форматов в yyyy-mm-dd
перед сравнением, а затем обратно, если необходимо.
Например, если у вас есть входные данные:
2010-03-01
2010-W01-1
вы можете сначала изменить их все на:
2010-03-01:2010-03-01
2010-01-04:2010-W01-1
(префикс реальных данных с определенной формой) затем сортируйте их. После сортировки вы вернетесь назад и удалите все до первого :
символа в каждом элементе, что восстановит исходную форму.
Не обязательно самый эффективный способ, но вам нужно будет сделать что-то вроде , если вы хотите сохранить первоначальную форму. Если это не проблема, просто конвертируйте их в конкретную форму один раз и оставьте так.