Это зависит от того, смешиваете ли вы форматы.
В любом конкретном формате, например yyyy-mm-dd
или yyyy-Www-d
, ISO 8601 построен для сортировки лексикографически (кроме отрицательных лет).
Из ISO 8601 wikipedia page:
Значения даты и времени организуются из наиболее к наименее значимым: год, месяц (или неделю), день, час, минута, секунда, и доли секунды. Таким образом, лексикографический порядок представления соответствует хронологическому порядку, за исключением представлений о датах с отрицательными годами. Это позволяет естественным образом сортировать даты, например, файловыми системами.
Это означает, что сортировка строк должна работать нормально.
Это только, если вы mix форматов не будет работать. Если это так, перед сопоставлением вам нужно будет преобразовать в определенный формат. Под этим я имею в виду что-то вроде преобразования всех форматов в yyyy-mm-dd
перед сравнением, а затем назад, если это необходимо.
Например, если у вас есть входные данные:
2010-03-01
2010-W01-1
вы могли бы сначала изменить их всех:
2010-03-01:2010-03-01
2010-01-04:2010-W01-1
(предваряя фактические данные с определенной формы), а затем отсортировать это. После сортировки вы затем возвращаетесь назад и отделяете все до первого символа :
в каждом элементе, который восстановит исходную форму.
Не обязательно самый эффективный способ, но вам нужно будет сделать что-то, если вы хотите сохранить оригинальную форму. Если это не проблема, просто переведите их в определенную форму один раз и оставите их такими.
Это формат даты: 2012-03-05 00: 30: 00.000 – alphablender
@alphablender, это не дата, это дата/время :-) Но теория по-прежнему сохраняется: преобразуйте ее в общую форму, чтобы лексикографическая сортировка работала, сортировала ее, а затем переводила обратно (при необходимости). Если _all_ ваших дат уже имеет такую форму, вам совсем не нужно конвертировать - обычная сортировка строк будет работать нормально. – paxdiablo