js中如何获得上一个月份?


主要是处理当月份为1月的情况,不知道js有没有专门的库,有这个函数。 谢谢

开发 js 月份计算 JavaScript

eggpain 10 years, 4 months ago

只判断月份

如果只是判断月份,比较简单。 new Date().getMonth()获取的就是当前月,其值是0-11。所以用以下代码就可以获取上个月了。

只需要判断当前月为1月的情况。

<script>
z=new Date().getMonth();
z=((z==0)?(12):(z));
alert(z);
</script>

带年月日的方案

/**
 * 获取上一个月
 *
 * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
 */
function getPreMonth(date) {
    var arr = date.split('-');
    var year = arr[0]; //获取当前日期的年份
    var month = arr[1]; //获取当前日期的月份
    var day = arr[2]; //获取当前日期的日
    var days = new Date(year, month, 0);
    days = days.getDate(); //获取当前日期中月的天数
    var year2 = year;
    var month2 = parseInt(month) - 1;
    if (month2 == 0) {
        year2 = parseInt(year2) - 1;
        month2 = 12;
    }
    var day2 = day;
    var days2 = new Date(year2, month2, 0);
    days2 = days2.getDate();
    if (day2 > days2) {
        day2 = days2;
    }
    if (month2 < 10) {
        month2 = '0' + month2;
    }
    var t2 = year2 + '-' + month2 + '-' + day2;
    return t2;
}


/**
 * 获取下一个月
 *
 * @date 格式为yyyy-mm-dd的日期,如:2014-01-25
 */        
function getNextMonth(date) {
    var arr = date.split('-');
    var year = arr[0]; //获取当前日期的年份
    var month = arr[1]; //获取当前日期的月份
    var day = arr[2]; //获取当前日期的日
    var days = new Date(year, month, 0);
    days = days.getDate(); //获取当前日期中的月的天数
    var year2 = year;
    var month2 = parseInt(month) + 1;
    if (month2 == 13) {
        year2 = parseInt(year2) + 1;
        month2 = 1;
    }
    var day2 = day;
    var days2 = new Date(year2, month2, 0);
    days2 = days2.getDate();
    if (day2 > days2) {
        day2 = days2;
    }
    if (month2 < 10) {
        month2 = '0' + month2;
    }

    var t2 = year2 + '-' + month2 + '-' + day2;
    return t2;
}


//测试        
//alert(getPreMonth("2014-01-25"));
//alert(getNextMonth("2014-12-25"));
F♂ckyou answered 10 years, 4 months ago

Your Answer