2012-09-13 48 views
0

我有一個ArrayCollection,我想按日期排序然後時間(如果有兩個項目具有相同的日期)。我已經按日期排序(YYYY/MM/DD),但我無法弄清楚時間,時間是24小時格式,因此代碼基本上與日期相同。按日期排序ArrayCollection然後時間 - Flex

這是我用於日期排序的代碼,它工作正常。

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(); 
} 
+0

日期和時間是兩個單獨的字段嗎?或者他們在同一個領域?如果同一個領域,我很驚訝你在做什麼是行不通的。你可能必須去一個SortCompareFunction。 – JeffryHouser

+0

他們是兩個獨立的領域。 – user1584282

+0

在這種情況下,你需要使用一個sortCompare函數。看起來伊萬在正式答案中提供了更多細節。 – JeffryHouser

回答

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(); 
} 
+1

參見'ObjectUtil.dateCompare'。 – approxiblue

0

由於有兩個不同的領域,你要排序上,你可以只使用排序對象的字段陣列添加兩個排序字段:

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