0

我有一个 ArrayCollection,我想按日期和时间排序(如果有两个项目具有相同的日期)。我已经按日期排序(YYYY/MM/DD),但我不知道时间位,时间是 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();
}
4

2 回答 2

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();
}
于 2012-09-13T08:41:51.417 回答
0

由于您要对两个单独的字段进行排序,因此您可以使用 Sort 对象的 fields Array 添加两个排序字段:

var sort:Sort = new Sort();
var fields:Array = [ new SortField("date"), new SortField("time") ];
sort.fields = sort;
于 2013-04-22T09:50:58.797 回答