2017-04-10 60 views
0

我正在做一個日期測試javascript程序,它會讓用戶輸入日期。它將解析日期以在具有適當標籤的單獨行上顯示月份,日期和年份。它還會將當前日期與輸入日期進行比較以顯示它們之間的日差。到目前爲止,我已經能夠獲得當前的數據以顯示並獲取用戶輸入,但不知道如何計算與輸入日期相關的天數。出於某種原因,它使用的是1969年,我想給我幾天的差異,不能把它分解成單獨的行。幾周來一直在研究這個問題,並以不同的方式打破我的頭腦。到目前爲止,我有以下幾點:javascript如何檢查2天之間的天數

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

+1

你需要普遍採用的 「差異化」 經營者... '-' ...在您的代碼中可疑地缺席 –

+0

請先搜索[* \ [ja vascript \]日差*](http://stackoverflow.com/search?q= [javascript] +日+差)返回許多類似的問題。選擇任何合理的人作爲副本。 – RobG

回答

0

下面是示例代碼

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

然後整個函數體可以'返回Math.round((date1 - date2)/ 8.64e7)'。由於結果不可靠,您不應該使用* Date.parse *(或Date構造函數)來解析日期。 – RobG

0

下面是一個簡單的函數,你可以使用

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,因爲差異會返回毫秒數。

+0

您應該使用* Math.round *,因爲不是所有的日子都在夏令時範圍內長達24小時。 – RobG

0

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

0

我認爲你應該使用這些代碼

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

這可能會在特定的夏令時邊界內停留一天。 – RobG