2011-09-07 4 views
13

Załóżmy, że otrzymane dwie daty od wtyczki datepicker w formacie DD/MM/YYYYporównania 2 dat w formacie dd/mm/rrrr z JavaScript/jQuery

var date1 = '25/02/1985'; /*february 25th*/ 
var date2 = '26/02/1985'; /*february 26th*/ 
/*this dates are results form datepicker*/ 

    if(process(date2) > process(date1)){ 
      alert(date2 + 'is later than ' + date1); 
    } 

Co ta funkcja powinna wyglądać?

function process(date){ 
    var date; 
    // Do something 
    return date; 
} 
+0

Czy jesteś pewien, że selektor daty nie zwraca rzeczywistych obiektów javascript 'Date'? Jeśli tak jest, możesz je po prostu porównać. – Jamiec

Odpowiedz

19

Podział na "/" i użyć Date constructor.

function process(date){ 
    var parts = date.split("/"); 
    return new Date(parts[2], parts[1] - 1, parts[0]); 
} 
+1

To podejście będzie działało lepiej niż to, które opublikowałem, ponieważ podejrzewam, że niektóre daty, takie jak 1/1/2000, domyślnie przyjmowałyby format mm/dd/yyyy po konwersji na obiekt daty. +1 dla ciebie, proszę pana. – Maxx

+0

powinien być zwrócony nowy Data (części [2], części [1] +1, części [0]); –

+3

Nie, składnik miesiąca daty javascript jest oparty na zera. Poza tym części [1] + 1 rzucają 1 jako ciąg i dołączają go do końca łańcucha części [1]. – InvisibleBacon

6
function process(date){ 
    var parts = date.split("/"); 
    var date = new Date(parts[1] + "/" + parts[0] + "/" + parts[2]); 
    return date.getTime(); 
} 
5

To może być łatwiejsze:

var date1 = '25/02/1985'; /*february 25th*/ 
var date2 = '26/02/1985'; /*february 26th*/ 

if ($.datepicker.parseDate('dd/mm/yy', date2) > $.datepicker.parseDate('dd/mm/yy', date1)) { 

     alert(date2 + 'is later than ' + date1); 

} 

Więcej szczegółów check this zewnątrz. Dzięki.

Powiązane problemy