通过在今天的日期添加6个月来获取月份的最后日期

时间:2015-03-31 11:44:04

标签: javascript angularjs

我使用以下代码将今天的日期增加了6个月。

var d = new Date();
        var curr_date = d.getDate();
        var curr_month = d.getMonth() + 7; //Months are zero based
        if(curr_month<10){
            curr_month = "0"+curr_month;
        }
        if(curr_date<10){
            curr_date = '0'+curr_date;
        }
        var curr_year = d.getFullYear();
        $scope.vmEndDate = curr_year + "/" + curr_month + "/" + curr_date;

当我打印$ scope.vmEndDate值时,Iam得到2015/09/31,但是在9月31日那天不存在。如何获得正确的价值。

4 个答案:

答案 0 :(得分:2)

您可以直接处理数月的日期:

var today = new Date(2015,03,31)
today.setMonth(today.getMonth()+6)
console.log(today.toLocaleDateString())

如果您希望在9月份获得有效日期,https://stackoverflow.com/a/11469976/4682796

答案 1 :(得分:0)

在javascript世界中,零开始!对我来说有点奇怪。无论如何,添加7到日期不是9月,而是7是10月。

这意味着你的代码是正确的

只需更改

var curr_month = d.getMonth() + 7; //Months are zero based

var curr_month = d.getMonth() + 6; //Months are zero based

答案 2 :(得分:0)

以下代码段可能会有所帮助。

var d = new Date();
var curr_date = new Date(d.getFullYear(), d.getMonth() + 6, d.getDate());
console.log(curr_date.getFullYear() + "/" +
((curr_date.getMonth() + 1).toString().length == 1 ? '0' + 
(curr_date.getMonth() + 1) : (curr_date.getMonth() + 1)) + "/" +
(curr_date.getDate().toString().length == 1 ? '0' + 
(curr_date.getDate()) : (curr_date.getDate())));
}

答案 3 :(得分:0)

使用this question中的代码可以解决如下问题。 您首先获取今天的日期,将其日期更改为第一天(或任何对所有月份有效的数字,例如1到28 ),然后提前六个月,然后将日期设置为最后一天这个月。

function daysInMonth(month, year)
{
    return 32 - new Date(year, month, 32).getDate();
}

var today = new Date()
today.setDate(1)
today.setMonth(today.getMonth()+6)
today.setDate(daysInMonth(today.getMonth(), today.getDate()))