Вам придется разобрать строки в дата() объектов, которые были бы достаточно просто, если бы не было плохой реализации IE о дате строки синтаксического анализа. К счастью, вы можете использовать SETDATE() и setMonth() с согласованности между браузерами, оба принимают номера - 1-31 для SETDATE(), 0-11 для setMonth(). Настройка карты объектов для имен месяцев поможет.
Это работает для меня:
(function() {
// Set up our variables, 2 date objects and a map of month names/numbers
var ad = new Date(),
bd = new Date(),
months = {
Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5,
Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov:10, Dec:12
};
MyArray.sort(function (a,b) {
// Split the text into [ date, month ]
var as = a.split(' '),
bs = b.split(' ');
// Set the Date() objects to the dates of the items
ad.setDate(as[0]);
ad.setMonth(months[as[1]]);
bd.setDate(bs[0]);
bd.setMonth(months[bs[1]]);
/* A math operation converts a Date object to a number, so
it's enough to just return date1 - date2 */
return ad - bd;
});
})();
//-> ["09 Jun", "13 Jun", "30 Jun", "13 Aug", "25 Aug"]
Я настроил пример для вас - http://jsfiddle.net/Tw6xt/
Это прекрасно работает! спасибо – 2010-08-23 22:58:39