Разница между двумя разными датами

141
09 ноября 2019, 14:50

Мое задание в университете требует, чтобы мы нашли сколько дней прошло от текущей даты до заданного пользователем дня рождения. Преподаватель попросил учесть високосные года и что если пользователь введет дату из будущего - я учла это. Теперь от нас просят чтобы учитывались даты до 1900 года. Я работаю с JS буквально пару недель и видимо могу чего-то не знать, но как я не бьюсь - не получается. Точного ответа на поставленный вопрос найти не удалось. Что мне почитать\посмотреть, чтобы решить эту проблему? Что я совершенно точно делаю не так? Большое спасибо за ваше внимание!

function completeTask05() {
    const dayOfBirth = prompt("Enter your day of birth", "0");
    const monthOfBirth = prompt("Enter your month of birth", "0");
    const yearOfBirth = prompt("Enter your year of birth", "0");
    const demo = document.body.getElementsByClassName("content-module__js-log")[0];
    demo.innerHTML = "Im alive for " + countAge(dayOfBirth, monthOfBirth, yearOfBirth) + " days";
}
function isLeapYear(year) {
    return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0));
}
function countLYforwards(year) {
    console.log('future!');
    let l = 0;
    for (let i = new Date().getFullYear(); i <= year; i++) {
        if (isLeapYear(i)) {
            l++;
        }
    }
    return l;
}
function countLYbackwards(year) {
    console.log('past!');
    let l = 0;
    for (let i = new Date().getFullYear(); i >= year; i--) {
        if (isLeapYear(i)) {
            l++;
        }
    }
    return l;
}
function countLeapYears(year) {
    let l = 0;
    if (year > new Date().getFullYear()) {
        l = countLYforwards(year);
    } else {
        l = countLYbackwards(year);
    }
    return l;
}
function parseYear(year) {
    console.log('parsing ' + year);
    if (year.toString().length < 2) {
        console.log('!!!' + year);
        return '000' + year;
    } else if (year.toString().length < 3) {
        console.log('!!' + year);
        return "00" + year;
    } else if (year.toString().length < 4) {
        console.log('!' + year);
        return "0" + year;
    }
    return year.toString();
}
function countAge(day, month, year) {
    const oneDay = (1000 * 60 * 60 * 24);
    const leapYears = countLeapYears(year);
    console.log(year.length);
    year.setFullYear(parseYear(year));
    if (year > new Date().getFullYear()) {
        return Math.trunc((Math.abs(new Date() - new Date(year, month - 1, day))
            + leapYears * oneDay) / oneDay);
    } else {
        return Math.trunc((Math.abs(new Date() - new Date(year, month - 1, day))) / oneDay);
    }
}
READ ALSO
Вызов стандартного окна валидации

Вызов стандартного окна валидации

Можно-ли с помощью JS,искусственно вызвать в поле вот такое окно:

119
Node.JS минификаторы

Node.JS минификаторы

Рендерю все страницы для юзеров на сервере, так вот мне нужно минифицировать все html, css, и jsНо есть проблема, некоторые html содержат в себе так-же...

104