Apache flex 按日期然后按时间排序ArrayCollection-灵活

Apache flex 按日期然后按时间排序ArrayCollection-灵活,apache-flex,sorting,actionscript,arraycollection,Apache Flex,Sorting,Actionscript,Arraycollection,我有一个ArrayCollection,我想先按日期再按时间排序(如果有两个项目的日期相同)。我已经按日期(YYYY/MM/DD)对其进行了排序,但我无法计算出时间位,时间是24小时格式的,因此代码基本上与日期相同 这是我用于日期排序的代码,工作正常 import mx.collections.SortField; import mx.collections.Sort; private function sort():void { var dataSortField:SortField =

我有一个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();
}

您可以使用此代码按日期和时间排序:

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();
}
私有函数排序():void
{
var dataSortField:SortField=new SortField();
dataSortField.name=“日期”;
dataSortField.compareFunction=函数(a:Object,b:Object):int{
var na:Number=a.date.getTime();
var nb:Number=b.date.getTime();
if(nanb)
返回1;
返回0;
};
var arrayDataSort:Sort=new Sort();
arrayDataSort.fields=[dataSortField];
reminderXMLArray.sort=arrayDataSort;
refresh();
}

由于有两个单独的字段需要排序,您可以使用排序对象的字段数组添加两个排序字段:

var sort:Sort = new Sort();
var fields:Array = [ new SortField("date"), new SortField("time") ];
sort.fields = sort;

日期和时间是两个独立的字段吗?还是他们在同一个领域?如果是同一个领域,我很惊讶你所做的不起作用。你可能得去一个SortComparency.在那种情况下;您需要使用sortCompare函数。看起来Ivan在正式的回答中提供了更多的细节。我做了一个类,并在日期的末尾添加了时间,所以它搜索像2012/10/31PM0100,即年/月/日/上午或下午/小时/分钟,方便的是字母表中a在P之前!它进入一个datagrid,列设置为visible=“false”,一个很好的日期,一周中的某一天可见,如2012年10月31日星期三下午12:00。谢谢你们两位的建议。另请参见
ObjectUtil.dateCompare