用户输入 - Javascript中两个日期的差异

Posted

技术标签:

【中文标题】用户输入 - Javascript中两个日期的差异【英文标题】:User input - difference of two dates in Javascript 【发布时间】:2018-02-06 13:52:21 【问题描述】:

我是 JS 的初学者。我有日期的用户输入值。我想在几天内得到差异。尝试了几种方法,都没有奏效。 将输入类型用作数字,但它不适用于 03092017 - 29082017 之类的示例,它输出的是数字差而不是日期。

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>

【问题讨论】:

请查看moment.js,它可以处理持续时间... ***.com/questions/11170054/… 谢谢。我现在花更多时间在moments.js上,供参考。 @Myonara @TranAudi 我经历过,但没有帮助。使用的时刻。谢谢 【参考方案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>

【讨论】:

感谢它的工作。新的时刻。非常迷人。干杯!【参考方案2】:

查看下面的示例解决方案以获得两个日期之间的天数差异

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

【讨论】:

如果用户更改月份会怎样?【参考方案3】:

你可以这样做:

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

希望对你有帮助:)

【讨论】:

非常感谢您的大力帮助。我也能够以这种方式做到这一点。 (parseInt((pickdt- dropdt) / (24 * 3600 * 1000))) 并得到了进行数学运算的值,如 link 欢迎您@Tithira。是的,如果你不想要依赖,这是一个很好的解决方案。

以上是关于用户输入 - Javascript中两个日期的差异的主要内容,如果未能解决你的问题,请参考以下文章

获取 JavaScript 中两个日期之间的差异? [复制]

如何使用javascript查找两个日期之间的天数差异

如何找到两个日期之间的差异c ++

Javascript和datediff mysql中日期之间的日期差异不相等

JavaScript - 两个时间字符串之间的差异[重复]

在codeigniter中查找与数据库的两个日期时间差异