Angularjs:如何更改日期格式

时间:2015-10-07 09:12:47

标签: angularjs date-format

我从数据库循环获取日期。格式类似于" 2015-09-21 18:30:00"。但我想把它改成&#dd / MM / yyyy'。 我试过这个

{{obj.added_date | date : 'dd/MM/yyyy'}}

它显示为

2015-09-21 18:30:00 | date : 'dd/MM/yyyy'}}

如果我使用fulldate,请告诉我:

2015-09-21 18:30:00 | date : 'fullDate'}}

对于shortDate,它显示如下:

2015-09-21 18:30:00 | date : 'shortDate'}}

3 个答案:

答案 0 :(得分:3)

您传递给视图的日期实际上是一个字符串,因此角度日期过滤器不会将其识别为日期对象。您需要先将其转换为日期对象。

另外要小心使用firefox,如果日期分隔符在' - '中,它对new Date();不起作用。相反' /'。所以我也建议在下面



var myApp = angular.module('myApp',[]);


 myApp.controller('MyCtrl', ['$scope','$filter', function ($scope,$filter) {
       var dateStr = '2015-09-21 18:30:00';
       $scope.dt = $filter('date')(new Date(dateStr.split('-').join('/')), "d/M/yyyy 'at' h:mm a");
    }]);

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<bod ng-app="myApp">

<div ng-controller="MyCtrl">
  <div>{{dt}}</div>
</div>
  </body>
&#13;
&#13;
&#13;

编辑:我创建了一个过滤器,用于将字符串转换为日期对象,也可以在循环中工作

&#13;
&#13;
var myApp = angular.module('myApp',[]);


 myApp.controller("MyCtrl", function ($scope) {
   $scope.dt = '2015-09-21 18:30:00'; 
});

myApp.filter('formatDate', function(dateFilter) {
   var formattedDate = '';
   return function(dt) {
     console.log(new Date(dt.split('-').join('/'))); 
     formattedDate = dateFilter(new Date(dt.split('-').join('/')), 'd/M/yyyy');   
     return formattedDate;
   }
     
});   
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<bod ng-app="myApp">

<div ng-controller="MyCtrl">
  <div>{{dt | formatDate: dt:'d/M/yyyy'}}</div>
</div>
  </body>
&#13;
&#13;
&#13;

希望这有帮助

答案 1 :(得分:1)

您指定的日期格式与AngularJS文档中提供的输入规范不匹配。以下摘自https://docs.angularjs.org/api/ng/filter/date

  

格式化为Date对象,毫秒(字符串或数字)或各种ISO 8601日期时间字符串格式的日期(例如yyyy-MM-ddTHH:mm:ss.sssZ及其较短版本,如yyyy-MM-ddTHH:mmZ, yyyy-MM-dd或yyyyMMddTHHmmssZ)。如果字符串输入中未指定时区,则认为时间在本地时区。

我建议您将日期值转换为毫秒,然后将其传递给过滤器。

答案 2 :(得分:0)

我所做的就是在bindind中使用angular JS中的数据之前你可以格式化数据

//Here i am taking the DOB from session and converted the format in dd-MM-yyyy format
string DOB = ((ABC.Models.Student)Session["Student"]).DOB.ToString("dd-MM-yyyy");

 //Here i have used a hidden field where i am going to store DOB in ng-Init 
 <input type="hidden" name="DOB" id="DOB" ng_init = "DOB=' " + "Date of Birth: " + DOB + "'"  /><br />

稍后可以调用你的ng-bind方法进行显示。

<p ng-bind="DOB"></p>