ich ungültige Daten wie „2016.09.31 10.10“ eingebenAusgabe mit Date.parse()
aber eigentlich nicht, wir in September 2016 jede 31. haben, was Date.parse() ist Dabei berechnet es das nächste Datum "01.10.2016 @ 10:10" als Ausgabe.
angular.module("myModule", [])
.controller("myController", ['$scope', function ($scope) {
$scope.dDate = "09/31/2016 10:10 AM";
$scope.format = function() {
$scope.display = Date.parse($scope.dDate);
}
$scope.format(); // invoke the format()
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="myModule" >
<div ng-controller="myController" ng-form="frm">
<input type="text" name="name" style="width:250px;" ng-model="dDate" ng-change="format()" placeholder="MM/dd/YYYY hh:mm AM/PM" ng-pattern="/^(0[1-9]|1[012])[/]([123]0|[012][1-9]|31)[/](19[0-9]{2}|2[0-9]{3}) ([01][0-9]|2[0-3]):([0-5][0-9]) (AM|PM|am|pm)$/" />
<div ng-show="!frm.name.$error.pattern">
{{display | date : 'MMM dd, yyyy @ hh:mm a'}}
</div>
<div>Error : {{frm.name.$error}}</div>
</div>
</body>
habe ich etwas falsch gemacht?
'Moment ("2016.09.31 10.10"). IsValid()' ist 'true'. – Amadan
@Amadan das ist, weil Moment dieses Format nicht auf eigene Faust unterbindet. check 'moment ('31.09.2016 ',' MM/TT/JJJJ '). isValid()' is 'false' – tanmay
Zitieren [momentjs docs] (http://momentjs.com/docs/#/parsing) "Für konsistente Ergebnisse, die andere als [ISO 8601] (https://xkcd.com/1179/) Strings analysieren, sollten Sie String + Format verwenden." – tanmay