2011-11-02 85 views
14

Tôi muốn so sánh ngày sinh của người dùng với ngày hôm nay và nhận được số ngày ở giữa. Sinh nhật họ nhập sẽ theo hình thức 1987/12/02 trong một hộp đầu vào của loại văn bảnSo sánh hai ngày trong JS

Trong file JS của tôi, tôi có mã trông như thế này:

function validateDOB(element) { 
var valid = false; 

var today = new Date(); 
var dd = today.getDate(); 
var mm = today.getMonth() + 1; //do that January is NOT represented by 0! 
var yyyy = today.getFullYear(); 

if (dd < 10) { 
    dd = '0' + dd 
} 
if (mm < 10) { 
    mm = '0' + mm 
} 

var today = mm + '/' + dd + '/' + yyyy; 
alert(today); 
if (element.value != today) { 
    var days = 0; 
    var difference = 0; 

    Christmas = new Date("December 25, 2011"); 

    today = new Date(); 

    difference = today - Christmas 

    days = Math.round(difference/(1000 * 60 * 60 * 24)-1); 
    alert(days); 
    valid = true; 
} 

Thay vào đó sử dụng "Giáng sinh" tôi muốn so sánh element.value ... làm cách nào để thực hiện việc này?

Khi tôi đặt difference = today - element.value nó sẽ không cho tôi thấy sự khác biệt. Hộp cảnh báo xuất hiện ở dạng NaN.

+0

thể trùng lặp của [Hãy so sánh 2 ngày với JavaScript] (http://stackoverflow.com/questions/492994/compare-2-dates-with-javascript) – Widor

+1

@widor không, tôi Q là cụ thể ... – BigBug

+1

Câu hỏi của bạn là cụ thể, có, nhưng câu hỏi đó trả lời câu hỏi đó. – Blender

Trả lời

141

Tôi đã viết một thư viện ngày nhẹ gọi Moment.js để xử lý những thứ như thế này.

var birthday = moment('12/02/1987', 'MM-DD-YYYY'); 
var inputDate = moment(element.value, 'MM-DD-YYYY'); 
var diff = birthday.diff(inputDate, 'days'); 

http://momentjs.com/docs/#/displaying/difference/

+24

Tôi thích Moment.js. Làm tốt lắm. –

+5

Khoảnh khắc mất rất nhiều nỗi đau về định dạng và thao tác ngày tháng. Công việc tuyệt vời. – RevNoah

+4

Thời điểm là điều tốt nhất trên thế giới. – jtromans