Сортировать ArrayCollection по дате и времени - Flex

У меня есть ArrayCollection, которую я хотел бы отсортировать по дате и времени (если есть два элемента с одинаковой датой). У меня есть хорошая сортировка по дате (ГГГГ / ММ / ДД), но я не могу определить бит времени, время в 24-часовом формате, поэтому код будет в основном таким же, как и для даты.

Это код, который я использовал для сортировки дат, он отлично работает.

import mx.collections.SortField;
import mx.collections.Sort;

private function sort():void  
{
var dataSortField:SortField = new SortField();
dataSortField.name = "date";

var arrayDataSort:Sort = new Sort();
arrayDataSort.fields = [dataSortField];

reminderXMLArray.sort = arrayDataSort;
reminderXMLArray.refresh();
}

2 ответа

Решение

Вы можете использовать этот код для сортировки по дате и времени:

private function sort():void
{
    var dataSortField:SortField = new SortField();
    dataSortField.name = "date";
    dataSortField.compareFunction = function (a:Object, b:Object) : int {
        var na:Number = a.date.getTime();
        var nb:Number = b.date.getTime();

        if (na < nb)
            return -1;

        if (na > nb)
            return 1;

        return 0;
    };

    var arrayDataSort:Sort = new Sort();
    arrayDataSort.fields = [dataSortField];

    reminderXMLArray.sort = arrayDataSort;
    reminderXMLArray.refresh();
}

Поскольку есть два отдельных поля, по которым вы хотите отсортировать, вы можете просто использовать поля массива объекта Sort для добавления двух полей сортировки:

var sort:Sort = new Sort();
var fields:Array = [ new SortField("date"), new SortField("time") ];
sort.fields = sort;
Другие вопросы по тегам