AngularJS – 在控制器中转换date

任何人都可以请build议我如何将这个1387843200000格式的date转换为我的控制器内的这个24/12/2013

只是供参考我的date是以这种方式存储和绑定到input type="date"编辑窗体字段根本没有被填充。

#Plunker在这里演示。

EditCtrl

 app.controller("EditCtrl", [ "$scope", "$filter", "db" function ($scope, $filter, db){ // this gets me an item object var item = db.readItem(); // item date = 1387843200000 // this returns undefined item.date = $filter('date')(date[ item.date, "dd/MM/yyyy"]); }]); 

Edit.html – 模板

 <form name="editForm" class="form-validate"> <div class="form-group"> <label for="date">Event date.</label> <input type="date" class="form-control" ng-model="event.date" id="date" required /> </div> <a href="#/" class="btn btn-danger ">Cancel</a> <button id="addEvent" class="btn btn-primary pull-right" ng-disabled="isClean() || editForm.$invalid" ng-click="saveEvent()">Save event.</button> </form> 
 item.date = $filter('date')(item.date, "dd/MM/yyyy"); // for conversion to string 

http://docs.angularjs.org/api/ng.filter:date

但是,如果您使用的是HTML5 type =“date”,则必须使用ISO格式yyyy-MM-dd。

 item.dateAsString = $filter('date')(item.date, "yyyy-MM-dd"); // for type="date" binding <input type="date" ng-model="item.dateAsString" value="{{ item.dateAsString }}" pattern="dd/MM/YYYY"/> 

http://www.w3.org/TR/html-markup/input.date.html

注意:使用type =“date”的pattern =“”看起来不是标准的,但它在Chrome 31中似乎以预期的方式工作。

创build一个filter.js,你可以使它成为可重用的

 angular.module('yourmodule').filter('date', function($filter) { return function(input) { if(input == null){ return ""; } var _date = $filter('date')(new Date(input), 'dd/MM/yyyy'); return _date.toUpperCase(); }; }); 

视图

 <span>{{ d.time | date }}</span> 

或在控制器中

 var filterdatetime = $filter('date')( yourdate ); 

在Angular js中进行date过滤和格式化。

这里的所有解决scheme并没有真正将模型绑定到input上,因为您必须将dateAsString更改回作为date保存在对象中(在提交表单后控制器中)。

如果你不需要绑定的效果,但只是在input中显示它,

一个简单的可能是:

 <input type="date" value="{{ item.date | date: 'yyyy-MM-dd' }}" id="item_date" /> 

然后,如果您愿意,可以在控制器中以这种方式保存编辑的date:

  $scope.item.date = new Date(document.getElementById('item_date').value).getTime(); 

注意:在你的控制器中,你必须声明你的itemvariables为$scope.item才能工作。

我build议在Javascript中:

 var item=1387843200000; var date1=new Date(item); 

然后date1是一个date。