【发布时间】:2017-02-23 13:03:37
【问题描述】:
这是我帖子的升级版:Jquery add month to date
我需要通过向 n.total 账单添加不同的月份来安排从开始日期开始的发票日期。日期不是当月的最后一天,而是开始的那一天,如果这一天对于当月来说太长(2 月 30 日或 11 月 31 日),请减少到当月的最后一天。
第一个日期将是开始日期。 第二个日期将是开始日期后的 5 个月。 第三个日期将是开始日期后的 1 年。 最高发票的第四个日期将每 6 个月一次。
例如: 开始日期:30/09/2015 maxInv: 6
- 发票 1:30-09-2015
- 发票 2:29-02-2016(闰年)
- 发票 3:30-09-2016
- 发票 4:2017 年 3 月 30 日
- 发票 5:2017 年 9 月 30 日
- 发票 6:30-03-2018
另一个例子: 日期开始: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
- 发票 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++ ){
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>
【问题讨论】:
-
能否将代码添加到问题中(请参阅minimal reproducible example)
-
PS 我尝试了两种不同的解决方案这个jsfiddle.net/J3cPD/112 和这个jsfiddle.net/hbud1h10
-
你能展示一下你尝试过的东西吗?
-
这是many other questions的副本。
标签: javascript jquery html date