Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算和显示特定日期?_Javascript_Html_Asp.net_Date - Fatal编程技术网

Javascript 如何计算和显示特定日期?

Javascript 如何计算和显示特定日期?,javascript,html,asp.net,date,Javascript,Html,Asp.net,Date,我正在写一份电子商务/租赁网站的在线合同,需要显示第一次付款的日期 首次付款应在本月1日或15日的第一次发生时支付,从合同日期起30天开始。因此,如果合同在1月10日完成,第一笔付款将在2月15日到期 我不知道如何使用JS实现这一点,因此非常感谢您的帮助。谢谢 编辑 假设我使用下面推荐的代码: function calc() { var invoiceDate = moment(document.getElementById("contractDate").value, ["M-D-YY

我正在写一份电子商务/租赁网站的在线合同,需要显示第一次付款的日期

首次付款应在本月1日或15日的第一次发生时支付,从合同日期起30天开始。因此,如果合同在1月10日完成,第一笔付款将在2月15日到期

我不知道如何使用JS实现这一点,因此非常感谢您的帮助。谢谢

编辑

假设我使用下面推荐的代码:

function calc() {
    var invoiceDate = moment(document.getElementById("contractDate").value, ["M-D-YYYY"]).add(30, 'days');

    while (invoiceDate.date() != 1 && invoiceDate.date() != 15) {
        invoiceDate = invoiceDate.add(1, 'days')
    }
    document.getElementById("invoiceDate").innerHTML = invoiceDate.format("MMMM Do, YYYY");
}

calc()



<script type='text/javascript' src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.js"></script>
<input type="text" id="contractDate" onchange="calc()" value="12-18-2014">
<div id="invoiceDate"></div>

我如何将其设置为自动更新到当前日期,而不需要填写文本表单?摆脱文本输入是防止人们伪造合同的最好办法。有什么建议吗?

看看一个名为

您将执行以下操作:

moment(beginning date here, format here).add(30, 'days')  
因此,在您的情况下,这将导致:

moment("15-01-2014", ["DD-MM-YYYY"]).add(30, 'days')
这是用DayDay MonthMonth yearyear表示的,但要根据您的需要更改它。 在这行代码之后,您有一个力矩对象。 在我的例子中,我使用以下方法从中检索日期:

getDateFromMoment(moment){
    var currentDay = moment.date();
      if(currentDay < 10){
          currentDay = '0' + moment.date();
      }
      var currentMonth = moment.month() + 1;
      if(currentMonth < 10){
          currentMonth = '0' + (moment.month() + 1);
      }
      var currentYear = moment.year();
      return currentDay + "-" + currentMonth + "-" + currentYear;
}
这将返回字符串形式的日期,例如15-02-2014。 框架本身可能需要一点习惯,但请向我保证。。这是值得你花时间的

此框架的优点:

易学 将通过年份变化、二月不一致、53或52周的年份、日期问题可能对您造成的任何影响来正确计算,MomentJS已覆盖您! 您可以将其自定义到应用程序中,更改区域设置、格式,您可以添加不仅仅是字符串日期对象,还可以添加JavaScript对象,等等。
希望我能帮助你

这可以使用纯javascript以相当简单的方式完成

函数计算{ var contractDate=new Datedocument.getElementByIdcontractDate.value console.log'contractDate',contractDate; var invoiceDate=新日期合同日期; invoiceDate.setDateinvoiceDate.getDate+30 当invoiceDate.getDate!=1&&invoiceDate.getDate!=15时{ invoiceDate.setDateinvoiceDate.getDate+1 } document.getElementByIdinvoiceDate.innerHTML=invoiceDate; } 计算 这是我的出价:

// http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js 函数getNextBillingDated{ var m=新的动量d; m=m.add1,“月”; 如果m.date>15{ m=m。加上“1”,“月”。日期1; }否则,如果m.date>1{ m=m.15; } 返回m.toDate; } var t=document.getElementById't'; 函数测试输入,应为{ var实际值=getNextBillingDateinput; var im=新的动量输入, em=预期的新力矩, am=新的动量; t、 innerHTML++=im.format'L'+'=>'+am.format'L'; t、 innerHTML+=''+em.isSameam?'PASS':'FAIL'++'\r\n'; } 测试新日期“2016年1月10日”,新日期“2016年2月15日”; 测试新日期“2016年1月15日”,新日期“2016年2月15日”; 测试新日期“2016年1月16日”,新日期“2016年3月1日”; 测试新日期“2016年3月1日”,新日期“2016年4月1日”; //仅当您关心演示中的输入字段时才向下滚动 $'d'.valmoment.format'L'; $'b'。单击,函数E{ 试一试{ var d=新时刻GetNextBillingDate新日期$'d'。val; $'r'.textd.format'L'; }卡塞克斯{ $'r'。文本“错误”; } }; 转换 单元测试:
只是一些简单的数学和数学。我会看一看。这将使你的生活在javascript中操作日期变得更加轻松。如果日期是1月15日,那么它还会是2月15日吗?还是跳到3月1日?它必须是+30,但不能落在30,我想是question@BradChristie在这种情况下,第一个付款日期是2月15日。您使用的是momentjs,但将其转换为字符串制造。。。。啊!而且,它给出了错误的结果。但是这返回了正确的结果,因为一月只有30天,因此它返回14-02:|我也明白了为什么字符串操作不好这几乎是完美的!有没有办法自动更新输入字段中设置的日期?