简体   繁体   English

JS关于使用2个功能比较日期的问题

[英]JS Question regarding compare date using 2 functions

Hi I'm very novice at Javascript so apologies for asking naff questions. 嗨,我是Javascript的新手,所以请求naff问题道歉。 This piece of code is returning a Nan when it should retrieve days elapsed. 这条代码返回一个Nan,它应该检索过去的天数。 Is the second function causing the issue? 导致问题的第二个功能是什么?

Here it is: 这里是:

<body>
  <script>
    function elapsedTime(date1, date2) {
      var start = new Date(date1);
      var startMilli = start.getTime();

      var end = new Date(date2);
      var endMilli = end.getTime();

      var elapsed = (endMilli - startMilli);
      alert(millisToDaysHoursMinutes(elapsed));

    }
    function millisToDaysHoursMinutes(millis) {
      var seconds = millis / 1000;
      var totalMinutes = seconds / 60;
      var minutesPerDay = 60 * 24;
      var days  = totalMinutes / minutesPerDay;

      return days;
    }
  </script>
  <form>
    Start:<input type="text" name="date1" value="dd/m/year" /><br>
    End:  <input type="text" name="date2" value="dd/m/year" />
    <input type="button" name="button1" onclick="elapsedTime(date1.value, date2.value)" value="Get Elapsed Time" />
  </form>
</body>

You need to ensure that the dates entered are valid else you'll get a NaN (Not a Number). 您需要确保输入的日期有效,否则您会得到一个NaN (不是数字)。 Use input type=date and make them required then you can easily check that they're valid before calling your date diff function. 使用input type=date并将其设置为required然后可以在调用date diff函数之前轻松检查它们是否有效。

EG: 例如:

 function elapsedTime(date1, date2) { var start = new Date(date1); var startMilli = start.getTime(); var end = new Date(date2); var endMilli = end.getTime(); var elapsed = (endMilli - startMilli); alert(millisToDaysHoursMinutes(elapsed)); } function millisToDaysHoursMinutes(millis) { var seconds = millis / 1000; var totalMinutes = seconds / 60; var minutesPerDay = 60 * 24; var days = totalMinutes / minutesPerDay; return days; } var date1 = document.querySelector("input[name=date1]"), date2 = document.querySelector("input[name=date2]"), button1 = document.querySelector("input[name=button1]"); button1.addEventListener("click", function() { var date1valid = date1.checkValidity(); var date2valid = date2.checkValidity(); if (date1valid && date2valid) { elapsedTime(date1.value, date2.value); } else { alert("Please provide both dates!"); } }); 
 <form> Start:<input type="date" name="date1" required="required" value="dd/m/year" /><br> End: <input type="date" name="date2" required="required" value="dd/m/year" /> <input type="button" name="button1" value="Get Elapsed Time" /> </form> 

You should use input type date to make your code work: 您应该使用输入类型date来使代码工作:

 <form> Start:<input type="date" name="date1" /><br> End: <input type="date" name="date2" /> <input type="button" name="button1" onclick="elapsedTime(date1.value, date2.value)" value="Get Elapsed Time" /> </form> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM