jQuery添加月份至今 [英] Jquery add month to date
问题描述
我需要在jQuery中为日期添加一个月.没关系,但是当日期是29或30或31时,我遇到了问题,因为11月31日不存在,2月30日不存在,有时2月29日不存在.
如果您要添加一个月,并且如果该天对于该月来说太大,则将其减少到该月的最后一天.
这是我的小提琴代码:
$(".demo").append("<p>Right</p>");
var dateSrt = new Date(2016, 7, 24);
for (var i = 1; i<=12; i++) {
if (i == 1) {
dateSrt.setMonth(dateSrt.getMonth());
} else {
dateSrt.setMonth(dateSrt.getMonth() + 1);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', dateSrt);
$(".demo").append("<label>" + txtDay + "</label><br>");
}
$(".demo").append("<p>Wrong (in this case if the date is incorrect must to be the last of the day)</p>");
var dateSrt=new Date(2016, 7, 30);
for (var i = 1; i<=12; i++) {
if (i == 1) {
dateSrt.setMonth(dateSrt.getMonth());
} else {
dateSrt.setMonth(dateSrt.getMonth() + 1);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', dateSrt);
$(".demo").append("<label>" + txtDay + "</label><br>");
}
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script>
<div class="demo"></div>
有什么建议吗?
似乎您可以简单地检查新的月份数字是否大于当前月份的数字+1,然后设置上个月的最后一天:>
$('.demo').append('<p>Right</p>');
var dateSrt = new Date(2016, 6, 30);
var currentDay = dateSrt.getDate();
for (var i = 0; i <= 11 ; i++) {
var currentMonth = dateSrt.getMonth();
dateSrt.setMonth(currentMonth + 1, currentDay);
if (dateSrt.getMonth() > currentMonth + 1) {
dateSrt.setDate(0);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', dateSrt);
$('.demo').append('<label>' + txtDay + '</label><br>');
}
<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>
I need to add a month to a date in jQuery. It's all ok, but when the date is 29 or 30 or 31 I have a problem because 31 November not exist, 30 February not exist and sometimes 29 February not exist.
If you want to add a month and, if the day is too great for the month, reduce the day to the last day of the month.
This is my fiddle code:
$(".demo").append("<p>Right</p>");
var dateSrt = new Date(2016, 7, 24);
for (var i = 1; i<=12; i++) {
if (i == 1) {
dateSrt.setMonth(dateSrt.getMonth());
} else {
dateSrt.setMonth(dateSrt.getMonth() + 1);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', dateSrt);
$(".demo").append("<label>" + txtDay + "</label><br>");
}
$(".demo").append("<p>Wrong (in this case if the date is incorrect must to be the last of the day)</p>");
var dateSrt=new Date(2016, 7, 30);
for (var i = 1; i<=12; i++) {
if (i == 1) {
dateSrt.setMonth(dateSrt.getMonth());
} else {
dateSrt.setMonth(dateSrt.getMonth() + 1);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', dateSrt);
$(".demo").append("<label>" + txtDay + "</label><br>");
}
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script>
<div class="demo"></div>
Any suggestion?
Seems like you can simply check that the new month number is more than current month number + 1, then set the previous month's last day:
$('.demo').append('<p>Right</p>');
var dateSrt = new Date(2016, 6, 30);
var currentDay = dateSrt.getDate();
for (var i = 0; i <= 11 ; i++) {
var currentMonth = dateSrt.getMonth();
dateSrt.setMonth(currentMonth + 1, currentDay);
if (dateSrt.getMonth() > currentMonth + 1) {
dateSrt.setDate(0);
}
var txtDay = $.datepicker.formatDate('dd-mm-yy', dateSrt);
$('.demo').append('<label>' + txtDay + '</label><br>');
}
<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>
这篇关于jQuery添加月份至今的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!