2017-05-05 3 views
4

Ich benutze moment.js in angularjs Anwendung für die Datumskonvertierung. Ich möchte Month number als Month name drucken. Ich habe als Gebrüll versucht,Wie bekomme ich `Monatsname` von` Monatsnummer` mit `moment.js`

<p>{{item.ReviewMonth | date : 'MMMM'}}</p> 

wo item.ReviewMonth in Nummer Format.

ex-1. <p>{{5 | date : 'MMMM'}}</p> wo 5 ist angeben "Mai" , aber seine print january statt May.

ex-2. <p>{{4 | date : 'MMMM'}}</p> wo 4 ist anzugeben "April" , aber seine print january statt April.

Wie kann ich den korrekten Monatsnamen von der Monatsnummer erhalten?

+0

Ausgabe ist geschehen, wenn Sie ng-repeat rechts versuchen Sie es mit? –

+0

ja. Ich benutze 'ng-Wiederholung'. –

+0

Überprüfen Sie, ob dies [link] (http://stackoverflow.com/questions/31274581/get-month-name-from-two-digit-month-number) hilft. – anpsmn

Antwort

3

Dies liegt daran, wenn date Filter versuchen 5 zu Date Objekt zu konvertieren, werden 5 als Millisekunden erkannt und zu 1970-01-01T00:00:00.005Z umgewandelt werden. Dann wird date Filter January zurückgeben.


Lösung:

moment('5', 'M').format('MMMM'); 

oder

moment('05', 'MM').format('MMMM'); 

angular.module("app", []) 
 
    .controller("myCtrl", function($scope) { 
 
    $scope.testDate = 5; 
 
    $scope.testDate2 = new Date(5); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="myCtrl"> 
 
    <span>{{testDate | date: 'MMMM'}}</span><br> 
 
    {{testDate2}} 
 
</div>

1

Sie Monatsnamen von Monat Nummer mit einfacher Javascript bekommen:

var monthNames = ["January", "February", "March", "April", "May", "June", 
    "July", "August", "September", "October", "November", "December" 
]; 

var month_number = 1; 
alert("The current month is " + monthNames[parseInt(month_number)+1]); 

Oder für Moment mit js es Ihnen gefällt bekommen:

var formattedMonth = moment('09', 'MM').format('MMMM'); // September 

moment(
    '09',   // Desired month 
    'MM'   // Tells MomentJs the number is a reference to month 
).format('MMMM') // Formats month as name 
0

Bitte einfache Richtlinie Name für Monat.

<!DOCTYPE html> 
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 

<body> 

<div ng-app="myApp" ng-controller="myCtrl"> 

<any ng-repeat="x in item"> 
    <my-dir myindex="x.ReviewMonth"></my-dir> 
</any> 

</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) 
{ 
    $scope.item = 
    [ 
     { 
      ReviewMonth:"9" 
     }, 
     { 
      ReviewMonth:"2" 
     }, 
     { 
      ReviewMonth:"3" 
     }, 
     { 
      ReviewMonth:"4" 
     }, 
     { 
      ReviewMonth:"5" 
     }, 
     { 
      ReviewMonth:"6" 
     }, 
     { 
      ReviewMonth:"7" 
     }, 
     { 
      ReviewMonth:"7" 
     } 
    ] 
}); 

app.directive('myDir', function() 
{ 
    return { 
    restrict: 'E', 
    scope: { 
     myindex: '=' 
    }, 
    template:'<div>{{myindex}}</div>', 
    link: function(scope, element, attrs) 
    { 
     var months = ["jan","feb","mar","apr","may","june","july","aug","sep","oct","nov","dec"]; 
     scope.myindex = months[scope.myindex]; 
    } 
    }; 
}) 
</script> 

</body> 
</html> 
1

Wenn Sie momentjs Methoden in Ihrem Winkelansicht verwenden möchten, können Sie angular-moment verwenden.

In Ihrem Fall, Sie amParse Filter, um anzugeben, dass Ihre Eingabe als Monatsnummer interpretiert werden soll, und dann können Sie amDateFormat verwenden, um zu wählen, wie das analysierte Datum angezeigt werden soll.

hier ein funktionstüchtiges Beispiel:

angular.module('MyApp',['angularMoment']) 
 
.controller('AppCtrl', function($scope) { 
 
    $scope.item = {}; 
 
    $scope.item.ReviewMonth = 5; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.9/angular.min.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-moment/1.0.1/angular-moment.min.js"></script> 
 

 
<div ng-app="MyApp" ng-controller="AppCtrl"> 
 
    <p>{{item.ReviewMonth | amParse:'M' | amDateFormat:'MMMM'}}</p> 
 
</div>

Verwandte Themen