比较JS中的两个日期

Big*_*Bug 14 html javascript forms date

我想将用户的生日与今天的日期进行比较,并获得介于两者之间的天数.他们输入的生日将以12/02/1987的形式出现文本类型的输入框中

在我的JS文件中,我的代码如下所示:

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;
}
Run Code Online (Sandbox Code Playgroud)

而不是使用"圣诞节",我想比较element.value......我该怎么做?

当我difference = today - element.value说它不会告诉我差异.警报框出现NaN.

tim*_*ood 142

我写了一个名为Moment.js的轻量级日期库来处理这样的东西.

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

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

  • 片刻带来了很多过时格式化和操作的痛苦.很棒的工作. (5认同)
  • 时刻是世界上最好的事情. (4认同)
  • 这一刻,瞬间摇滚! (3认同)

gil*_*ly3 12

您需要先解析element.value为日期:

difference = today - new Date(element.value);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/gilly3/3DKfy/