Задать вопрос
@D4mn

Как создать программу, которая рассчитает сколько пользователю полных лет и через какой промежуток времени пользователю нужно будет поменять паспорт?

Создать программу которая рассчитает сколько пользователю полных лет и через какой промежуток времени пользователю нужно будет поменять паспорт. Пользователь должен будет ввести фамилию, имя, отчество (полностью) и дату рождения в формате dd.mm.yyyy.
Например:
Ввод:
Иванов Иван Иванович 01.01.2001.
Вывод программы: Здравствуйте Иванов И.И. на данный момент Вам 19 лет. Через 21 день Вам необходимо будет заменить паспорт.
Помогите, пожалуйста, только начал изучать JS, задали такое задание и без понятия, как рассчитать дней до смены паспорта, все перепробовал, что видел в интернете, ничего не получилось
Вот код в HTML:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script defer src="script\year.js"></script>
    <title>Паспорт</title>
</head>
<body>
    <a>Введите ФИО: </a><input id="Inp0" placeholder="Full name">
    <a>Введите дату рождения: </a><input id="Inp1" type="date" value="" placeholder="DD.MM.YYYY">
    <button id="Btn1">start</button>
    <div class="Out"></div>
</body>
</html>

Вот код в JS:
let BtnStart = document.querySelector("#Btn1");
let Inp0 = document.querySelector("#Inp0")
let Inp1 = document.querySelector("#Inp1");
let Out = document.querySelector(".Out");

BtnStart.onclick = function(){

let Name0 = ("Здравствуйте, " + Inp0.value + "," + " на данный момент вам " );

if(Inp0.value.length === 0){
    Name0 = "Здравствуйте, " + "X," + " на данный момент вам ";
}
            var strDate = document.getElementById('Inp1').value;
            strDate 
            var arrDate = strDate.split(/\D+/g).reverse();
            var date = new Date(arrDate[2], arrDate[1] - 0, arrDate[1]);
            var now = new Date()
            var age = now.getFullYear() - date.getFullYear();
            now.setFullYear(date.getFullYear());
            if (now < date) age--;{}
            if (isNaN(age)) age = "X";
    

Out.innerHTML = Name0 + age +" лет ";
}
  • Вопрос задан
  • 241 просмотр
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
RAFAILgaley
@RAFAILgaley
гугли js библиотеки для работы с датами

Day.js
Ответ написан
@FrelFrloich
function toISODate(milliseconds) {
    var date = new Date(milliseconds)
    var stap = 24 // Прибавляем к дате число смены пасспорта, допустим в 45 лет

    var y = date.getFullYear() + stap
    var m = date.getMonth() + 1
    var d = date.getDate()
    m = m < 10 ? '0' + m : m
    d = d < 10 ? '0' + d : d

    return [y, m, d].join('-')
}

var date1 = new Date()
var date2 = new Date(2001, 11, 30)

var timeSec = Math.abs(date1.getTime() - date2.getTime()) // Выясняем сколько лет парню
var timeSec2 = Math.abs(date2.getTime() + timeSec) // Прибавляем к его возрасту современную дату для вычисления сколько ему лет на сегодня

let divDate = document.createElement('div')
divDate.innerHTML = `Ближайшая смена пасспорта : ${toISODate((milliseconds = timeSec2))}`
document.body.appendChild(divDate)


Это бред конечно ещё тот, но может натолкнуть вас на какую либо мыслю, вообще лучше делать это на php в плане легче.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы