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();
Enjoy the post.

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.
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.
OMG enjoyed reading this article. I submitted your feed to my reader.
Above will sort descending order wright??
Suppose if i want to sort ascending order??
You can easily add this line
sort.reverse();
after
var sort:Sort=new Sort();
Best Regards,
Thank’s for the post Kumar, it put me on the correct path. To answer Ajay’s question about sort order: Simply swap dateA and dateB in the call to dateCompare(),
return ObjectUtil.dateCompare(dateA.dateB)// ASC
return ObjectUtil.dateCompare(dateB,dateA)// DESC
Hi,
your welcome, and thanks for sharing other info on the blog, but for that above question one could figure it out if he/she has seen the code written on ObjectUtil class and its method dateCompare, its simple logic though, but anyways thanks for sharing.
regards,
kumar.
an alternative is to convert your strings to date objects and use the date.time with a simple numerical sort
Very useful! Thanks