javascript 如何检查两个日期之间的天数

javascript how to check number of days in between 2 dates

我正在开发一个日期测试 javascript 程序,可以让用户输入日期。它将 解析日期 以使用适当的标签在不同的行上显示月、日和年。它还会将当前日期与输入的日期进行比较,以显示它们之间的天数差异。到目前为止,我已经能够显示当前数据并接受用户输入,但不知道如何计算与我输入的日期之间的天数。出于某种原因,它使用的是 1969 年,我想给我天数差异并且无法将其解析为单独的行。已经为此工作了数周,并且正在以不同的方式让我头疼。到目前为止,我有以下内容:

<header>
    <h1>Date Test</h1>
</header>
<br>
<p>Please enter date:</p>
<input id="inp" type="date">
<br>
<br>
<button type="button" onclick="date_test()">Process</button>
<br>
<p id="iop"></p>
<br>
<p id="op"></p>
<br>
<p id="dd"></p>

<script>

    document.getElementById("op").innerHTML = Date();

        function date_test() {

            var d = document.getElementById("inp").value;
            document.getElementById("iop").innerHTML = d;

            var inpu = document.getElementById("inp").value;
            var da = Date.parse(inpu);
            var minutes = 1000 * 60;
            var hours = minutes * 60;
            var days = hours * 24;
            var x = Math.round(da / days);

            document.getElementById("dd").innerHTML = x;

        }
</script>

这是一个您可以使用的简单函数

function calculate_days(date1, dat2){
    return (date2-date1)/(24*3600*1000);
}

date1 = new Date("4-4-2017");
date2 = new Date("4-8-2017");
console.log(calculate_days(date1, date2));

其中 date1 和 date2 是日期对象。需要分母中的 1000,因为差异将 return 毫秒数。

这里是示例代码

<header>
<h1>Date Test</h1>
</header>
<br>
<p>Please enter date:</p>
<input id="inp" type="date">
<br>
<br>
<button type="button" onclick="date_test()">Process</button>
<br>
<p id="iop"></p>
<br>
<p id="op"></p>
<br>
<p id="dd"></p>

<script>

  document.getElementById("op").innerHTML = Date();

  function date_test() {

    var d = document.getElementById("inp").value;
    document.getElementById("iop").innerHTML = d;

    var inpu = document.getElementById("inp").value;
    var da = Date.parse(inpu);
    //here passing current date & selected date as params
    console.log(daysBetween(new Date(), new Date(da)))

  }


  daysBetween = function( date1, date2 ) {
    console.log(date1);
    console.log(date2);
    //Get 1 day in milliseconds
    var one_day=1000*60*60*24;

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime();
    var date2_ms = date2.getTime();

    // Calculate the difference in milliseconds
    var difference_ms = date2_ms - date1_ms;

    // Convert back to days and return
    return Math.round(difference_ms/one_day); 
  }

</script>

var date1 = new Date();
var dd = date1.getDate()+20; // add 20 days
var mm = date1.getMonth()+1; //January is 0!
var yyyy = date1.getFullYear();
if(dd<10) {
dd='0'+dd
}
if(mm<10) {
mm='0'+mm
}
date2 = new Date(yyyy+'/'+mm+'/'+dd);

var timeDiff = Math.abs(date2.getTime() - date1.getTime());
days = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log("day difference: ", days);

我认为你应该使用这些代码

    var date1 = new Date("7/20/2017");
var date2 = new Date("12/25/2017");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
alert(diffDays);