【问题标题】:subtracting two dates with the <input type=date>用 <input type=date> 减去两个日期
【发布时间】:2015-12-05 09:15:37
【问题描述】:

我在尝试从两个日历选择中获取日期并将它们放入以下计算时遇到基本问题。

谁有解决办法?

谢谢 伊恩

<body>
  <h1>Project Details</h1>

  <h3>Please enter the project Notice to Proceed (NTP) date: <input     id="NtpDate" type= "date" name="NtpDate"></h3>
  </br>
  <h3>Please enter the Report date: <input type= "date" name="ReportDate">    </h3>

  <script type="text/javascript">
    // I would like to replace this with the <input type = date> tags ...var     NtpDate = new Date("7/11/2004");
     // I would like to replace this with the <input type = date> tags ...	var      ReportDate = new Date("12/12/2010");	

    var timeDiff = Math.abs(ReportDate.getTime() - NtpDate.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
     //alert(diffDays);
    document.write("Period =" + diffDays + " (Days from NTP)");
  </script>`
</body>

【问题讨论】:

    标签: javascript jquery html date


    【解决方案1】:

    重复问题How to calculate date difference in javascript

    但这就是你如何获得两个日期选择器的值。 var ReportDate = document.getElementById('ReportDate').value;

    【讨论】:

      【解决方案2】:

         <body>
        <h1>Project Details</h1>
      
        <h3>Please enter the project Notice to Proceed (NTP) date: <input     id="NtpDate" type= "date" name="NtpDate"></h3>
        </br>
        <h3>Please enter the Report date: <input id="ReportDate" type= "date" name="ReportDate" onchange="myFunction()">    </h3>
      
        <script type="text/javascript">
      
      myFunction = function(){
      
      alert(document.getElementById("NtpDate").value +" >> "+document.getElementById("ReportDate").value)
         
      
       var NtpDate = new Date(document.getElementById("NtpDate").value);
      	
      var ReportDate = new Date(document.getElementById("ReportDate").value);	
      
      var timeDiff = Math.abs(ReportDate.getTime() - NtpDate.getTime());
      var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
       //alert(diffDays);
      alert("Period =" + diffDays + " (Days from NTP)");}
        </script>`
      </body>

      【讨论】:

      • 我没有警告这一点,而是试图让它写入页面,这就是为什么警告被注释掉了。也许我应该删除它。在几天内得到答案也很酷。
      【解决方案3】:

      momentJS 非常适合日期操作和格式化。由于闰日之类的原因,你自己滚动永远不会完全正确。

      时刻很简单:

      moment('some date').diff('other date', 'days')

      moment.diff()

      【讨论】:

        【解决方案4】:

        编辑:Updated fiddle

        你可以试试这样的:

        <h3>Please enter the project Notice to Proceed (NTP) date: <input id="NtpDate" type= "date" name="NtpDate"></h3>
        
        <h3>Please enter the Report date: <input type= "date" name="ReportDate" id="abc"></h3>
        
        $("#abc").on("change", function () {
          var olddate = new Date($("#NtpDate").val());
          var newdate = new Date($(this).val());
          var timeDiff = Math.abs(newdate.getTime() - olddate.getTime());
          var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
          alert(diffDays);
        });
        

        DEMO FIDDLE

        【讨论】:

        • 谢谢阿米特。我试图将结果(以天为单位)打印到屏幕上而不是提醒它,
        • @lain 您可以删除警报并将其放置在任何地方,例如 id= demo 为 $("#demo").text(diffDays); 的 div
        • 感谢阿米特的帮助!
        • 如果有帮助别忘了标记为正确答案。
        • 问题解决了吗? @lain?
        猜你喜欢
        • 2012-06-07
        • 1970-01-01
        • 1970-01-01
        • 2020-10-28
        • 2014-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多