2011-09-07 34 views
13

Giả sử tôi nhận được hai ngày từ các plugin datepicker ở định dạng DD/MM/YYYYHãy so sánh 2 ngày ở định dạng DD/MM/YYYY với 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); 
    } 

gì nên chức năng này như thế nào?

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

Bạn có chắc là công cụ chọn ngày của bạn không trả về các đối tượng 'Date' javascript thực tế? Nếu đó là sau đó bạn chỉ có thể so sánh chúng. – Jamiec

Trả lời

19

Chia vào "/" và sử dụng Date constructor.

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

Cách tiếp cận này sẽ hoạt động tốt hơn phương pháp tôi đăng vì tôi nghi ngờ một số ngày như 1/1/2000 sẽ mặc định thành định dạng dd/mm/yyyy khi được chuyển đổi thành đối tượng ngày. 1 cho bạn, thưa bạn. – Maxx

+0

cần trả về ngày mới (các bộ phận [2], các bộ phận [1] +1, các bộ phận [0]); –

+3

Không, thành phần tháng của ngày javascript là không dựa trên. Bên cạnh các phần [1] + 1 sẽ bỏ 1 thành chuỗi và nối nó vào cuối các phần [1] string .. – InvisibleBacon

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

Nó có thể được dễ dàng hơn nhiều:

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); 

} 

Để biết thêm chi tiết check this ra. Cảm ơn.