下面我循环了一个月,但总是缺少月份;请帮助相同。我想显示最近3个月的节目显示。
$scope.months = [];
var myDate = new Date();
var previousMonth = new Date(myDate);
for(var i=0;i<4;i++){
var mon=myDate.getMonth()-i;
if(mon<-1){
mon=mon+12;
}
previousMonth.setMonth(mon);
$scope.prevMonth = $filter('date')(previousMonth, 'MMMM');
console.log("$scope.prevMonth ",$scope.prevMonth)
$scope.prevYear = $filter('date')(previousMonth, 'yyyy');
$scope.months.push({"val":previousMonth.getMonth()+1,"month":$scope.prevMonth});
console.log($scope.months);
$scope.years.push($scope.prevYear);
}
答案 0 :(得分:2)
<强>问题:强> 这是因为你今天是29天,2月份,最大日期是28.当你试图将月份设置为1(2月),日期设置为29已经设置。它会自动增加月份;)
例如:
var overMaxDate = new Date('2018-03-29');
overMaxDate.setMonth(1)
console.log(overMaxDate.toLocaleDateString());
var maxDate = new Date('2018-03-28');
maxDate.setMonth(1)
console.log(maxDate.toLocaleDateString());
<强>解决方案:强> 您可以使用https://momentjs.com/库以您喜欢的方式操纵日期。或者你也可以跟踪日子。祝你好运!