Что нового

Комплексная сортировка дат?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Как вы сортируете даты в следующем формате:

01.01.2010
01.02.2010
12.02.2009
09.11.2008
17.01.2007
06.10.2001

Без использования TimeDiff или вычисления количества секунд от 01.01.1900 г. эти функции работают очень медленно и не подходят для сортировки огромных массивов по датам.

Т.е. дата состоит из трех элементов:
дата А = (01).(01).(2010)
дата Б = (02).(01).(2010)
Необходимо сначала сравнить третий элемент обеих дат (год), потом второй элемент (месяц), потом третий элемент (день).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Объедини в одну строку "Год" & "Месяц" & "День" и сравнивай эти строки.
 

XpycT

Скриптер
Сообщения
380
Репутация
132
Suppir
Вот как я сортирую
Код:
#Region Includes
#include <Array.au3>
#EndRegion Includes
#NoTrayIcon

Dim $aDates[7][2] = [[6, ""], ["01.01.2010", ""], ["01.02.2010", ""], ["12.02.2009", ""], ["09.11.2008", ""], ["17.01.2007", ""], ["06.10.2001", ""]]

For $i = 1 To $aDates[0][0]
	$aDates[$i][1] = StringRegExpReplace($aDates[$i][0], "^(\d{2})\.(\d{2})\.(\d{4})", "\3\2\1")
Next
_ArraySort($aDates, 0, 1, 0, 1)
_ArrayDisplay($aDates, "$aDates")
 
Верх