Сравните две даты в JS - PullRequest
       1

Сравните две даты в JS

14 голосов
/ 03 ноября 2011

Я хочу сравнить день рождения пользователя с сегодняшней датой и получить количество дней между ними.День рождения, который они вводят, будет иметь вид 12/02/1987 в поле ввода типа text

В моем файле 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;
}

Вместо использования "Рождество" я хочу сравнить element.value ... как мне это сделать?

Когда я ставлю difference = today - element.value, он не будет отображатьсямне разница.Окно предупреждения отображается как NaN.

Ответы [ 2 ]

141 голосов
/ 03 ноября 2011

Я написал облегченную библиотеку дат под названием 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'); 

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

12 голосов
/ 03 ноября 2011

Вам необходимо сначала разобрать element.value как дату:

difference = today - new Date(element.value);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...