Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript如何检查两个日期之间的天数_Javascript_Date Parsing - Fatal编程技术网

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

javascript如何检查两个日期之间的天数,javascript,date-parsing,Javascript,Date Parsing,我正在开发一个日期测试javascript程序,让用户输入日期。它将解析日期以在带有适当标签的单独行上显示月、日和年。它还将比较当前日期和输入的日期,以显示它们之间的天数差。到目前为止,我已经能够显示当前的dat并接受用户输入,但不知道如何根据我输入的日期计算中间的天数。出于某种原因,它使用1969年,我想给我天数的差异,不能让它解析成单独的行。我已经为此工作了好几个星期,现在正想方设法想办法解决这个问题。到目前为止,我有以下几点: <header> <h1>Da

我正在开发一个日期测试javascript程序,让用户输入日期。它将解析日期以在带有适当标签的单独行上显示月、日和年。它还将比较当前日期和输入的日期,以显示它们之间的天数差。到目前为止,我已经能够显示当前的dat并接受用户输入,但不知道如何根据我输入的日期计算中间的天数。出于某种原因,它使用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>


日期测试

请输入日期:



过程



document.getElementById(“op”).innerHTML=Date(); 函数日期_测试(){ var d=document.getElementById(“inp”).value; document.getElementById(“iop”).innerHTML=d; var inpu=document.getElementById(“inp”).value; var da=Date.parse(inpu); var分钟=1000*60; var小时=分钟*60; var天数=小时*24; var x=数学轮(da/天); document.getElementById(“dd”).innerHTML=x; }

这里有一个简单的函数,您可以使用

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是日期对象<分母中需要code>1000,因为差值将返回毫秒数。

以下是示例代码

<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>

日期测试

请输入日期:



过程



document.getElementById(“op”).innerHTML=Date(); 函数日期_测试(){ var d=document.getElementById(“inp”).value; document.getElementById(“iop”).innerHTML=d; var inpu=document.getElementById(“inp”).value; var da=Date.parse(inpu); //此处将当前日期和所选日期作为参数传递 console.log(daysBetween(new Date(),new Date(da))) } daysBetween=函数(日期1,日期2){ console.log(date1); 控制台日志(日期2); //以毫秒为单位获取1天 var一天=1000*60*60*24; //将两个日期转换为毫秒 var date1_ms=date1.getTime(); var date2_ms=date2.getTime(); //以毫秒为单位计算差值 var差异=日期2\u ms-日期1\u ms; //返回到天并返回 返回数学圆(差分毫秒/一天); }
var date1=新日期();
var dd=date1.getDate()+20;//加20天
var mm=date1.getMonth()+1//一月是零!
var yyyy=date1.getFullYear();

如果(dd我认为你应该使用这些代码

    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);

你需要普遍的“差异”运算符…
-
…代码中可疑缺失请先搜索,返回许多类似的问题。选择任何合理的问题作为副本。您可能应该使用Math.round,因为并非所有日子都在夏令时边界上长达24小时。这可能是在某些夏令时边界上的一天。然后整个函数n body可以
返回Math.round((date1-date2)/8.64e7)
。由于结果不可靠,因此不应使用Date.parse(或日期构造函数)解析日期。