Ответ 1
Вам нужно сначала разобрать element.value
как дату:
difference = today - new Date(element.value);
Я хочу сравнить день рождения пользователя с сегодняшней датой и получить количество дней между ними. День рождения, который они вводят, будет иметь вид 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;
}
Вместо того, чтобы использовать "Рождество", я хочу сравнить element.value
... как это сделать?
Когда я поставлю difference = today - element.value
, это не покажет мне разницу. Поле предупреждения появляется как NaN
.
Вам нужно сначала разобрать element.value
как дату:
difference = today - new Date(element.value);
Я написал небольшую библиотеку дат, называемую 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');