我想用MomentJS给我的MomentJS增加一个月,但它似乎不适用于几天.
我想留一天加一个月。
我想要这个:
30不在月份的最后一天)守则:
currentDueDate.add(1, 'M');
我明白了:
编辑(整个代码):
<!-- Calculs -->
<% var currentDueDate = moment(agreement.billbook.first_due_date) || moment(); %>
<% var nbLines = 6; %>
<% var monthToAdd = 1; %>
<!-- /Calculs -->
<table class="table">
<% for(var i = 0; i < nbLines; i++ ){ %>
<tr>
<td><%=i+1%></td>
<td><%=currentDueDate.format('L')%></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<% currentDueDate.add(monthToAdd, 'M'); %>
<% } %>
</table>发布于 2015-10-28 15:34:48
显然,日期与天29,30和31是角落的例子。此外,对于31日,还有一个角落的情况,因为所有月份都没有31天。我建议的是有三个functions来涵盖所有的场景:
1) dateWith31
2) dateWith29And30
3) dateWithRest - has the same flow what you have wrote
switch currentDueDate.get('date') :
case 31 :
dateWith31(currentDueDate)
case 30 :
dateWith29And30(currentDueDate)
case 29 :
dateWith29And30(currentDueDate)
default :
dateWithRest(currentDueDate)
function dateWith31(currentDueDate){
for(var i = 0; i < nbLines; i++ ){
currentDueDate.add(1,'M').endOf('M');
}
}
function dateWith29And30(currentDueDate){
var temp = currentDueDate.get('date'); //stores the original day
for(var i = 0; i < nbLines; i++ ){
var prevMonth = currentDueDate.get('M');
if(prevMonth === 1) //date has been changed in February and hence fix it
currentDueDate.add(1,'M').set('date',temp);
else
currentDueDate.add(1,'M');
}
}希望它可以用您正在使用的语言实现(我猜是PHP)
https://stackoverflow.com/questions/33394741
复制相似问题