Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by Scott on Feb 04, 2008 09:33
open dhtmlx forum
Custom sorting strange problem

Hello,

I have a very strange probelm with custom sorting - its driving me mad as I cannot see why it is happening? The column has a date format of the following.

dd/mm/yyyy hh:ii:ss

i.e.

31/01/2008 05:01:09

my custom sorting code is thus.

    mygrid.setCustomSorting(function(a,b,order){

    var aparts= a.split(" ");
    var datepart=aparts[0].split("/");
    var timepart=aparts[1].split(":");
    var adate=new Date(datepart[2], datepart[1], datepart[0], timepart[0], timepart[1], timepart[2]);
    
    var bparts= b.split(" ");
    var datepartb=bparts[0].split("/");
    var timepartb=bparts[1].split(":");
    var bdate=new Date(datepartb[2], datepartb[1], datepartb[0], timepartb[0], timepartb[1], timepartb[2]);
            

if (order=="asc") return (adate>bdate?1:-1);
else return (adate<bdate?1:-1);

},i);

this appeasr to have been working fine until a few days ago somebody noticed the following in the list when sorted asc

02/02/2008 05:00:11
31/01/2008 05:01:09
02/02/2008 05:05:55

which is obviously wrong - its seems to be the only one that is but I cannot for the life of me see why it should be there? Is there something glaring that I am missing?

Scott

Answer posted by Support on Feb 04, 2008 09:56
The Date object expect that month and date will be a zero based numbers, so you need to use

var adate=new Date(datepart[2]-1, datepart[1]-1, datepart[0], timepart[0], timepart[1], timepart[2]);
....
var bdate=new Date(datepartb[2]-1, datepartb[1]-1, datepartb[0], timepartb[0], timepartb[1], timepartb[2]);