これは私の投稿のアップグレードです:Jqueryは日付に月を追加します
n.total請求書に別の月を追加して、開始日から請求書の日付をスケジュールする必要があります。日付は月末ではなく開始日であり、その日がその月(2月30日または11月31日)に対して大きすぎる場合は、その月の最後の日に減らします。
最初の日付は開始日です。2番目の日付は開始日から5か月後です。3番目の日付は開始日から1年後です。最大請求書の4番目の日付は6か月ごとになります。
例:dateStart:30/09/2015 maxInv:6
別の例:dateStart:31/08/2018 maxInv:6
どんな提案でも大歓迎です
PS私はこのhttp://jsfiddle.net/J3cPD/112/の2つの異なる解決策を試しました
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++ ){
var currentMonth = dateSrt.getMonth();
if(i===1){
currentMonth=currentMonth;
}else if(i===2){
currentMonth=currentMonth+(mthBill-1);
}else if(i<=nBill){
currentMonth=currentMonth+(mthBill);
}
dateSrt.setMonth(currentMonth, currentDay);
if (dateSrt.getMonth() > currentMonth + 1) 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) dateSrt.setDate(0);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="demo"></div>
あなたはこのようにそれを行うことができます:
function printInterval(startDate, maxInvoice) {
var splitSrt = startDate.split('-');
var dateSrt = new Date(splitSrt[2], splitSrt[1] - 1, splitSrt[0]);
var currentDay = dateSrt.getDate();
var billsCount = 6;
$('.demo').append('<div><b>Start date: ' + startDate + ', Max Invoice: ' + maxInvoice + '</b></div>');
for (var i = 0, j = 0; i < billsCount; i++) {
var newDate = new Date(dateSrt.getTime());
newDate.setMonth(dateSrt.getMonth() + j, currentDay);
if (newDate.getMonth() > (dateSrt.getMonth() + j) % 12) {
newDate.setDate(0);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', newDate);
$('.demo').append('<div>'+ (i + 1) + '. Invoice ' + (i + 1) + ': ' + txtDay + '</div>');
if (i === 0) {
j += 5;
} else if (i === 1) {
j += 7;
} else {
j += maxInvoice;
}
}
}
printInterval('30-09-2015', 6);
printInterval('31-08-2018', 6);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="demo"></div>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加