При разработке решений может возникнуть необходимость сортировки массива по дате и времени.
Для удобства разработки и переиспользования сортировка вынесена в методы для системных типов TDate и TDatetime с возможностью указания порядка сортировки.
Немного упрощенное сравнение значений на подобие логике сравнения дат на фронте.
Код:
function dateSort(a: TDate | undefined, b: TDate | undefined, ascending = true) {
return datetimeSort(a?.asDatetime(new TTime(0, 0, 0, 0)), b?.asDatetime(new TTime(0, 0, 0, 0)), ascending);
}
function datetimeSort(a: TDatetime | undefined, b: TDatetime | undefined, ascending = true) {
const x = a?.asDate() ?? new Date(-8640000000000000);
const y = b?.asDate() ?? new Date(-8640000000000000);
return ascending ? x.valueOf() - y.valueOf() : y.valueOf() - x.valueOf();
}