Вычитание двух дат с помощью кнопки отправки - PullRequest
0 голосов
/ 30 сентября 2018

У меня проблема с вычитанием двух дат.Все начинается с двух входов.Один для даты и один кнопка отправки.В пункте #ekran необходимо указать, является ли datePicked ниже сегодняшней даты.это покажет, что нам нужно выбрать дату в будущем.В противном случае он будет считать разницу между сегодняшней датой и какой-то датой, которую мы выберем.

Когда я делаю это, она говорит, что NaN.Я знаю, что где-то напортачил, но не знаю, где это.Вероятно, в var d = newDate(), что необходимо правильно отформатировать дату.Или я не прав?Помогите мне, ребята.

ps Это нужно сделать в DOM lvl 2 способом с помощью EventListener.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <input type="date">
    <input type="submit" value="submit">

    <p id="ekran"></p>


    <script>
     var button = document.querySelector("[type=submit]").addEventListener('click', racunaj);

     function racunaj() {
        var d = new Date();
        d.setDate(30,9,2018);
        var datePicked = document.querySelector("[type=date]").value;

        var diff = document.getElementById("ekran").innerHTML = datePicked;




        if (datePicked< d) {
            "The Picked date need to be bigger then todays date";
        } else {
            return diff;
        }
     }
     </script>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Если вы хотите сравнить, что-то больше или меньше, чем что-то другое, вы должны сначала сделать их того же типа.

Javascript-объект Date имеет встроенную функцию getTime (), которую можно использовать для преобразования даты в число.Если у вас есть два числа, их легко сравнить.

Я переписал ваш сценарий, чтобы продемонстрировать это.

    var button = document.querySelector("[type=submit]").addEventListener('click', racunaj);

     function racunaj() {
//       first I make the two variables into a number that can be compared

       var currentTimeAndDate = new Date().getTime();
        var datePicked = new Date(document.getElementById("myDate").value).getTime();

// as you see on the console, they are now two numbers that can be compared.      

       console.log(datePicked, currentTimeAndDate)

//then you just do your logic and output different stuff. 

       if(datePicked < currentTimeAndDate){
       var diff = document.getElementById("ekran").innerHTML = "you chose past" 
      }
       else if(datePicked > currentTimeAndDate){
       var diff = document.getElementById("ekran").innerHTML = "you chose future"          
       }
       else{
        var diff = document.getElementById("ekran").innerHTML = "you did not choose" 
       }
     }

Вот кодекс: https://codepen.io/anon/pen/qJEGme?editors=1011

0 голосов
/ 30 сентября 2018

Вы можете изменить свой код следующим образом (это мой предыдущий ответ, который я суммировал, чтобы увеличить сходство с вашим кодом):

 window.onload=function(){
    document.querySelector("[type='submit']").addEventListener('click', racunaj); 
   function racunaj() {
        var d = new Date();
        d.setDate(30,9,2018);
        var datePicked = new Date(document.querySelector("[type=date]").value); 
        var diff = datePicked.getTime()-d.getTime();
        document.getElementById("ekran").innerHTML=diff<0 ? "The Picked date need to be bigger then todays date" : diff +" (days: "+(diff/1000/60/60/24).toFixed(2)+")";
        return diff;
     }
}

Вы можете проверить результат онлайн!

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