Javascript 如何计算和显示特定日期?
我正在写一份电子商务/租赁网站的在线合同,需要显示第一次付款的日期 首次付款应在本月1日或15日的第一次发生时支付,从合同日期起30天开始。因此,如果合同在1月10日完成,第一笔付款将在2月15日到期 我不知道如何使用JS实现这一点,因此非常感谢您的帮助。谢谢 编辑 假设我使用下面推荐的代码: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
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:|我也明白了为什么字符串操作不好这几乎是完美的!有没有办法自动更新输入字段中设置的日期?