Сортировка даты в Javascript путем преобразования строки в формат даты

Как я могу преобразовать эти строки в формат даты и отсортировать соответственно.... пожалуйста

2010-11-08 18:58:50.0_getCreated_10180  
2010-11-09 17:49:42.0_getCreated_10180  
2010-11-09 17:49:42.0_getCreated_10180  
2010-11-24 19:44:51.0_getCreated_10180  
2010-11-09 13:54:46.0_getCreated_10180  
2010-11-23 20:06:29.0_getCreated_10180  
2010-11-23 20:06:04.0_getCreated_10180  
2010-11-15 17:51:37.0_getCreated_10180 

Спасибо заранее, Джозеф

Ответ 1

Если у вас это в одной строке, то сделайте.

// first create an array by splitting the string at the newlines
var list = dateString.split('\n'); 
list = list
    .map( // for each element in the list (each date)
        function(val,idx){
            // use the first part(before the dot(.)), replace the - with spaces and convert to date
            return new Date(val.split('.')[0].replace(/-/g,' '));
    })
    .sort(); // at the end sort the results.

пример http://www.jsfiddle.net/gaby/rfGv8/


Для каждой даты (строки) нам нужно

2010-11-08 18:58:50 .0_getCreated_10180 (удалите часть после.)
выполняется с помощью val.split('.')[0]

затем замените пробел, чтобы он выглядел как 2010 11 08 18:58:50, который является допустимым форматом даты для конструктора Date.
выполняется с помощью val.split('.')[0].replace(/-/g,' ')

Затем передайте его как параметр конструктору Date для создания объекта Date
выполняется с помощью new Date(val.split('.')[0].replace(/-/g,' '))

после применения вышеуказанного ко всем элементам и получения нового массива используйте метод .sort() для сортировки массива в порядке возрастания.

Ответ 2

Пожалуйста, используйте следующий код. Функция getDateSort возвращает отсортированную дату

 <script language="javascript" type="text/javascript">

            function getDateSort() {


                dateArray = new Array('2010-11-08 18:58:50', '2010-11-09 17:49:42',
    '2010-11-09 17:49:42', '2010-11-15 17:51:37', '2010-11-23 20:06:04', '2010-11-09 13:54:46', '2010-11-23 20:06:29', '2010-11-24 19:44:51');
                dateArray.sort(dmyOrdA);
                alert('Ascending : ' + dateArray + '');
                return false;
            }


            var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
            function dmyOrdA(a, b) {
                a = a.replace(dateRE, "$3$2$1");
                b = b.replace(dateRE, "$3$2$1");
                if (a > b) return 1;
                if (a < b) return -1;
                return 0;
            }
            function dmyOrdD(a, b) {
                a = a.replace(dateRE, "$3$2$1");
                b = b.replace(dateRE, "$3$2$1");
                if (a > b) return -1;
                if (a < b) return 1;
                return 0;
            }
            function mdyOrdA(a, b) {
                a = a.replace(dateRE, "$3$1$2");
                b = b.replace(dateRE, "$3$1$2");
                if (a > b) return 1;
                if (a < b) return -1;
                return 0;
            }
            function mdyOrdD(a, b) {
                a = a.replace(dateRE, "$3$1$2");
                b = b.replace(dateRE, "$3$1$2");
                if (a > b) return -1;
                if (a < b) return 1;
                return 0;
            }

        </script>