最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

angularjs - JavaScript - List of last 12 Months - Stack Overflow

programmeradmin2浏览0评论

I have an Angualr service that lists out 12 months and year from the current month:

JS:

app.factory('12months', function() {
    return {
        getMonths: function() {
            var date = new Date();
            var months = [],
                monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
            for(var i = 0; i < 12; i++) {
                months.push(monthNames[date.getMonth()] + ' ' + date.getFullYear());
                date.setMonth(date.getMonth() - 1);
            }    
            return months;
        }
     };
 });

Which output is:

Oct 2014, Sep 2014, Aug 2014 etc etc

How can i modify this to display the day too, so:

21 Oct 2014, 21 Sep 2014, 21 Aug 2014 etc etc

I have an Angualr service that lists out 12 months and year from the current month:

JS:

app.factory('12months', function() {
    return {
        getMonths: function() {
            var date = new Date();
            var months = [],
                monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
            for(var i = 0; i < 12; i++) {
                months.push(monthNames[date.getMonth()] + ' ' + date.getFullYear());
                date.setMonth(date.getMonth() - 1);
            }    
            return months;
        }
     };
 });

Which output is:

Oct 2014, Sep 2014, Aug 2014 etc etc

How can i modify this to display the day too, so:

21 Oct 2014, 21 Sep 2014, 21 Aug 2014 etc etc
Share Improve this question edited Oct 21, 2014 at 11:03 Arun P Johny 388k68 gold badges531 silver badges532 bronze badges asked Oct 21, 2014 at 10:43 Oam PsyOam Psy 8,66335 gold badges97 silver badges167 bronze badges 1
  • 1 Simply add day info in line with months.push() – cezarypiatek Commented Oct 21, 2014 at 10:47
Add a ment  | 

6 Answers 6

Reset to default 3

How about using the date filter

var app = angular.module('my-app', [], function() {

})

app.controller('AppController', ['$scope', '12months',
  function($scope, tmonths) {
    $scope.tmonths = tmonths.getMonths();
  }
])

app.factory('12months', ['dateFilter',
  function(dateFilter) {
    return {
      getMonths: function() {
        var date = new Date();
        var months = [];
        for (var i = 0; i < 12; i++) {
          months.push(dateFilter(date, 'dd MMM yyyy'));
          date.setMonth(date.getMonth() - 1)
        }
        return months;
      }
    };
  }
]);
<script src="https://ajax.googleapis./ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app" ng-controller="AppController">
  <pre>{{tmonths | json}}</pre>
</div>

append date to string:

app.factory('12months', function() {
    return {
        getMonths: function() {
            var date = new Date();
            var months = [],
                monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
            for(var i = 0; i < 12; i++) {
                months.push(date.getDate()+ ' ' +monthNames[date.getMonth()] + ' ' + date.getFullYear());
            }    
            return months;
        }
     };
 });

You can just concatenate the day to the string in the months array:

So instead of this:

months.push(monthNames[date.getMonth()] + ' ' + date.getFullYear());

Do this:

months.push(date.getDate() + ' ' + monthNames[date.getMonth()] + ' ' + date.getFullYear());

You can date in jquery

var date = new Date();
date.getDate() //output:- 21

Add Total days in the days Array:

  app.factory('twelvemonths', function() {
return {
    getMonths: function() {
        var date = new Date();
        var months = [],
            monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
            days=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];
        for(var i = 0; i < 12; i++) {
            months.push(days[date.getDate()]+ ' ' +monthNames[date.getMonth()] + ' ' + date.getFullYear());
        }    
        return months;
    }
 };

});

If you want to use your function you could change the line to

months.push(date.getDate() + ' ' monthNames[date.getMonth()] + ' ' + date.getFullYear());
发布评论

评论列表(0)

  1. 暂无评论