Sorting Date’s on ArrayCollection in Flex

First things first, read about the mx.collections.Sort Class before going in to the code below.

About the Post,suppose i have a AC[ArrayCollection] like below;

[Bindable]
private var arrClldetails:ArrayCollection = new ArrayCollection([
{Fname:"Kranthi", Lname:"Kata", dob:"21 Sep 79"},
{Fname:"Vasanth", Lname:"Lola", dob:"11 Jun 80"},
{Fname:"Manoj", Lname:"Pati", dob:"16 July 81"},
{Fname:"John McClain", Lname:"Mela", dob:"15 Feb 72"},
{Fname:"Ross", Lname:"Geller", dob:"02 Jan 74"},
{Fname:"Chandler", Lname:"Bing", dob:"18 Oct 76"}
]);

Now i want to Sort the “dob” Date field in the AC.,so for this i need to
write a compareFunction for Sort which in turn is applied to the AC like below,

//Compare Function
private function fnCompareFunction(ObjA:Object,ObjB:Object,fields:Array = null):int
{
//fnDtfParceFunct is a Date parse function avail in DownloadCode.
var dateA:Date=fnDtfParceFunct(ObjA.dob,”DD/MM/YY”);
var dateB:Date=fnDtfParceFunct(ObjB.dob,”DD/MM/YY”);
return ObjectUtil.dateCompare(dateA, dateB);
}

Now apply this CompareFunction to Sort and then apply that to AC like below,

var sort:Sort=new Sort();
sort.compareFunction=fnCompareFunction;
arrClldetails.sort=sort;

Now refresh the AC for Sort to take effect,

arrClldetails.refresh();

Run Demo

Download Code

Enjoy the post.

3 Responses to “Sorting Date’s on ArrayCollection in Flex”

  1. Jloa Says:

    The sort function doesn’t sort data properly. You should convert date stamps in your fnDtfParceFunct() to int Numbers and compare them like numeric values.

    • kumargandhi Says:

      It does work correctly,let me explain,suppose i have Date in DD MMM YY [24 Nov 09] format, so when i parse this to get my Date object, i get something like this “Tue Nov 24 00:00:00 GMT+0530 2009″, now you can observe the Timestamp its 0,well all the dates in the example have 0 timestamps,and please explore ObjectUtil.dateCompare(),it does what you have mentioned.

      regards,
      kumar.

  2. Cetaliainkina Says:

    OMG enjoyed reading this article. I submitted your feed to my reader.

Leave a Reply