jQuery添加月份至今 [英] Jquery add month to date

查看:82
本文介绍了jQuery添加月份至今的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在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> 

JSFiddle

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>

JSFiddle

这篇关于jQuery添加月份至今的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆