2012-02-15 28 views
5

Cách đơn giản nhất để so sánh hai ngày bỏ qua dấu thời gian là gì. Tôi có hai ngày firstDate đến từ cơ sở dữ liệu (được chuyển đổi thành ngày javascript) và secondDate đến từ trường nhập ngày bộ chọn.
Về cơ bản cho thuật toán của tôi hai ngày này bằng nhau vì nó không có dấu thời gian để xem xét nhưng mã sẽ không xem xét nó bằng firstDate01:00:00 trong đó.
Làm thế nào để loại bỏ hoàn toàn dấu thời gian để so sánh?So sánh ngày Javascript bỏ qua giá trị dấu thời gian

firstDate:

Tue 24 tháng 3 năm 1992 01:00:00 GMT-0500 (Central Daylight Time)

secondDate:

Tue 24 Tháng 3 1992 00:00:00 GMT-0500 (Giờ ban ngày miền Trung)

Code:

if(firstDate < secondDate) { 

     alert("This alert shouldn't pop out as dates are equal"); 
    } 

Trả lời

5

Bạn có thể sử dụng toDateString để thoát khỏi những thời điểm đó, và phân công lại đó đến firstDate và các biến secondDate. Có thể có một cách tốt hơn, nhưng đây là những gì tôi nghĩ đến.

firstDate = new Date(firstDate.toDateString()); 
secondDate = new Date(secondDate.toDateString()); 
if(firstDate < secondDate){ 
    alert("This alert shouldn't pop out as dates are equal"); 
} 

Ngoài ra, bạn sẽ muốn đảm bảo bạn so sánh giá trị của ngày và không kiểm tra xem chúng có cùng đối tượng khi bạn so sánh nếu chúng bằng nhau không. Vì vậy, một cái gì đó như thế.

firstDate.valueOf() == secondDate.valueOf() 

Bạn cũng có thể xem JSFiddle example của mình.

+0

Derek cảm ơn câu trả lời. Tôi đã có cùng một giải pháp tự hỏi nếu có một cách khác. Nếu không có người nào khác trả lời tôi sẽ chấp nhận câu trả lời của bạn. – user1195192

0

Câu trả lời của Derek là chính xác. Một phương pháp thay thế mà không tạo các cá thể ngày tháng mới là tạo chuỗi ngày tháng RFC3339.

var firstDateStr = firstDate.toISOString().slice(0, 10); 
var secondDateStr = secondDate.toISOString().slice(0, 10); 

return (firstDateStr < secondDateStr); 
+0

Trong ví dụ của tôi, tôi không so sánh các chuỗi, mà đúng hơn là 'new Date()' được khởi tạo với kết quả từ 'toDateString()' – derekaug

+0

Ah thực sự là bạn làm. Misread, xin lỗi. Chỉnh sửa câu trả lời. – Deestan

3

Sử dụng Date.setHours(hrs, mins, secs, ms) chức năng với tất cả các đối số zero để thiết lập thời gian trong ngày đến nửa đêm trong cả ngày (tạo một bản sao nếu bạn cần ngày với thời gian cho các mục đích khác).

Các vấn đề liên quan