這是我的帖子的升級版:Jquery add month to date如何在for循環中添加不同月份的日期?
我需要通過將一個不同的月份添加到n.total賬單來安排發票的日期從開始日期。日期不是月份的最後一天,但是開始的那一天,如果一天的日子太過分了(2月30日或11月31日),則減少到月份的最後一天。
第一個日期將是開始日期。 第二個日期將在開始日期後5個月。 第三個日期將在開始日期後1年。 第四個日期到最大發票將每6個月。
例如: dateStart:30/09/2015 maxInv:6
- 發票1:30-09-2015
- 發票2:29-02-2016(閏年)
- 發票3:30-09-2016
- 發票4:30-03-2017
- 發票5:30-09-2017
- 發票6:30-03-2018
又如: dateStart:31/08/2018 maxInv:6
- 發票1:31-08-2018
- 發票1:31-01-2019
- 發票1:31-08-2019
- 發票2:29-02-2020(閏年)
- 發票3:31-08-2020
- Invoi CE 4:28-02-2021
任何建議,歡迎
PS我已經嘗試了兩種不同的解決方案 這http://jsfiddle.net/J3cPD/112/
var dateStart="31-08-2018";
var splitSrt = dateStart.split("-");
var dateSrt = new Date(splitSrt[2], splitSrt[1] - 1, splitSrt[0]);
var nBill=10;
var mthBill=6;
for (var i=1 ; i<=nBill ; i++){
if(i===1){
srvDay = new Date(dateSrt.getFullYear(), dateSrt.getMonth(), dateSrt.getDate());
}else if(i===2){
newDate = dateSrt.addMonths(mthBill - 1);
srvDay = new Date(newDate.getFullYear(), newDate.getMonth(), newDate.getDate());
newDate = dateSrt.addMonths(1);
}else if(i<=nBill){
newDate = dateSrt.addMonths(mthBill);
srvDay = new Date(newDate.getFullYear(), newDate.getMonth(), newDate.getDate());
}
srvDay= srvDay.toString('dd-MM-yyyy');
$(".demo").append("<label>"+srvDay+"</label><br>");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://www.datejs.com/build/date.js" type="text/javascript"></script>
<div class="demo"></div>
這https://jsfiddle.net/hbud1h10/
var dateStart="31-08-2018";
var splitSrt = dateStart.split("-");
var dateSrt = new Date(splitSrt[2], splitSrt[1] - 1, splitSrt[0]);
var currentDay = dateSrt.getDate();
var nBill=10;
var mthBill=6;
for (var i=1 ; i<=nBill ; i++){
\t \t var currentMonth = dateSrt.getMonth();
\t \t if(i===1){
currentMonth=currentMonth;
}else if(i===2){
\t \t currentMonth=currentMonth+(mthBill-1);
}else if(i<=nBill){
\t \t currentMonth=currentMonth+(mthBill);
}
dateSrt.setMonth(currentMonth, currentDay);
if (dateSrt.getMonth() > currentMonth + 1) \t dateSrt.setDate(0);
srvDay= dateSrt.toString('dd-MM-yyyy');
$(".demo").append("<label>"+srvDay+"</label><br>");
if(i===2){
dateSrt.setMonth(currentMonth+1, currentDay);
if (dateSrt.getMonth() > currentMonth + 1) \t dateSrt.setDate(0);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="demo"></div>
願你的代碼添加到問題(見[MCVE]) – evolutionxbox
PS我已經嘗試了兩種不同的解決方案 這個 http://jsfiddle.net/J3cPD/112/ 和這個 https://jsfiddle.net/hbud1h10/ –
你可以展示你的嘗試。 –