2015-08-06 2 views
0

Я не очень хорошо разбираюсь в строках и нуждаюсь в некоторой помощи.JavaScript - Сортировка по времени Строка

У меня есть эта функция, которая занимает 2 дивы и получает пункт, который содержит строку, представляющее время в формате, который выглядит следующим образом:

Пятница, 7 августа 2015, 18:21 PM

или

Вторник, 21 августа 2015 года, 10:45

2 примера. Я хочу создать функцию сравнения сортировки, которая вернет правильный номер, если он больше другого, но я не уверен, как извлечь дни, когда число может составлять 1 или 2 цифры, а также учитывать точное время и т. Д. .

Строка времени - это часть innerText, которую я разделил, где есть запятая, так что atime и btime являются массивами для каждого раздела.

Вот что я сделал до сих пор:

// format: Friday, 7 August 2015, 18:21 PM 
// atime[0] --> Friday 
// atime[1] --> 7 August 2015 
// atime[2] --> 18:21 PM 

function sortByTimeAdded(a, b) { 
    var atime = (a.getElementsByClassName('timeAdded')[0].innerText).split(','); 
    var btime = (b.getElementsByClassName('timeAdded')[0].innerText).split(','); 

    /*if (atime[1] < btime[1]) { 
     return -1; 
    } 
    if (atime[1] > btime[1]) { 
     return 1; 
    }*/ 
    return 0; 
} 

Спасибо!

+0

Итак, вы хотите, чтобы они отсортированы в хронологическом порядке? –

+0

да, я просто не знаю, как и как сделать его эффективным. – Mayron

+2

'innerText' не является стандартным и не поддерживается Firefox. Лучше использовать 'textContent'. – Oriol

ответ

3

Я предлагаю использовать Date.parse, я покажу на примере:

var a = "Friday, 7 August 2015, 18:21 PM" 
Date.parse(a.substring(0, a.length-3)) 

с этим вы получаете временную метку можно использовать для сравнения.

Если вам нужен объект даты, просто замените Date.parse на Date()

+0

Это определенно помогает мне начать работу. Спасибо за совет! – Mayron

+1

Альтернативно, если вы введете новую дату() в строку даты, вы получите хороший объект даты js. Вызовите getTime(), и вы получите миллисекунды unix. Используйте это для прямого сравнения. –

+0

Это на самом деле отлично. Я не понимал, что он преобразует весь текст в цифры, гораздо эффективнее, чем все, что я мог бы сделать. Еще раз спасибо. – Mayron