2017-08-29 18 views
0

我是JS的初學者。我有日期的用戶輸入值。我想在幾天內獲得差異。嘗試了幾種方法,但沒有一種方法奏效。 將輸入類型用作數字,但對於03092017 - 29082017等示例不起作用,它會輸出數字差異而不是日期。用戶輸入 - Javascript中兩個日期的差異

function resetForm() { 
 
    location.reload(); 
 
} 
 

 
function dates() { 
 
    var n_Date = document.getElementById('ddate').value; 
 
    var e_Date = document.getElementById('cdate').value; 
 
    var nDate = new Date(n_Date); 
 
    var eDate = new Date(e_Date); 
 
    var nMonth = n_Date.getMonth(); 
 
    var eMonth = eDate.getMonth(); 
 
    var nYear = nDate.getFullYear(); 
 
    var eYear = eDate.getFullYear(); 
 
    var Years = Math.abs(nYear - eYear); 
 
    var Months = Math.abs(nMonth - eMonth); 
 
    var Dates = Math.abs(nDate - eDate); 
 
    var fDate = Dates + Months + Years; 
 

 
    if (fDate <= 7) { 
 
    alert("You have: " + fDate + " days to return the book"); 
 
    } else if (eDate > 7) { 
 
    var g = (fDate * 50); 
 
    alert("Overdue by: " + fDate + " days fee is: " + g); 
 
    } 
 

 
}
<form id="myform"> 
 
    <table> 
 
    <tr> 
 
     <td>Book Returning Due Date:</td> 
 
     <td><input type="date" id="ddate" placeholder="dd/mm/yyyy"></td> 
 
    </tr> 
 
    <tr> 
 
     <td>Current Date:</td> 
 
     <td><input type="date" id="cdate" placeholder="dd/mm/yyyy"></td> 
 
    </tr> 
 
    <tr> 
 
     <td><input type="button" onclick="dates();" value="Check for Due"> </td> 
 
     <td><input type="button" id="reset" onclick="resetForm()" value="Reset"></td> 
 
    </tr> 
 

 
    </table> 
 
</form>

+1

請在[moment.js]看看(https://momentjs.com/docs/#/durations/creating/),有權處理的持續時間的能力.. 。 – Myonara

+0

https://stackoverflow.com/questions/11170054/compare-dates-with-javascript –

+0

謝謝。我現在花更多時間爲moments.js轉介。 @Myonara – Tithira

回答

1

嘗試使用moment.js這一點。

var startDate = moment("13.04.2016", "DD.MM.YYYY"); 
 
var endDate = moment("28.05.2016", "DD.MM.YYYY"); 
 
var result = 'Diff: ' + endDate.diff(startDate, 'days'); 
 
    
 
    console.log(result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://momentjs.com/downloads/moment.js"></script>

+0

感謝它的工作。新的瞬間。非常迷人。乾杯! – Tithira

1

低於樣品溶液檢查,以兩個日期之間的差異獲得在天

var nDate = new Date(n_Date); 
var eDate = new Date(e_Date); 
var diffInDays = nDate.getDate()-eDate.getDate() 

這裏是解決樣本數據:

var nDate = new Date("2017-08-29"); 
 
    var eDate = new Date("2017-08-25"); 
 
    var diffInDays = nDate.getDate()-eDate.getDate() 
 
console.log(diffInDays);

+0

如果用戶更改月份,該怎麼辦? –

+0

謝謝你的幫助@Nemani – Tithira

0

你可以做這樣的事情:

var startDate = new Date(2017,08,29); 
 
var endDate = new Date(2017,09,15); 
 
var oneDayMilliseconds = 3600*24*1000; 
 

 
var daysLeft = Math.round(Math.abs((startDate.getTime() - endDate.getTime())/(oneDayMilliseconds))); 
 

 
console.log("Days left: " + daysLeft);

希望它能幫助:)

+0

非常感謝你的幫助。我也是這樣做的。 '(parseInt((pickdt- dropdt)/(24 * 3600 * 1000)))'並且獲得了數值,並在[link]中進行數學運算(https://stackoverflow.com/questions/26216565/calculate-number- of-days-between-two-input-type-date-in-html) – Tithira

+0

歡迎你@Tithira。是的,如果你不需要依賴關係,這是一個很好的解決方案。 – MrGoodKat