2015-10-07 91 views
3

我从数据库中获取循环中的日期。格式就像“2015-09-21 18:30:00”。但我想将其更改为'dd/MM/yyyy'。 我试过这样Angularjs:如何更改日期格式

{{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'}} 
+0

检查日期是否:“DD/MM/YY”是去工作 – Amar

+1

使自定义过滤器和使用JavaScript这一点。 – Ved

+0

@Rajesh:日期:从DB“DD/MM/YY”不工作 –

回答

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>

编辑:我创建了一个过滤器,将转换字符串到日期的对象工作,将在循环工作太

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; 
 
    } 
 
     
 
});
<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>

希望这有助于

+0

它不是单一的日期,它是在循环中,不知道怎么能像你所建议的那样。 –

+0

这种情况下,创建自己的过滤器,让我编辑我的答案 –

+0

看看我编辑的答案,希望这是你在找什么! –

0

我所做的是在angularind数据绑定之前,您可以格式化数据

//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> 
+0

我越来越喜欢约会“” 2015年9月21日18:30:00" ,这是不是一个对象,请仔细阅读问题 –

+0

灿你发布你的代码,以便我可以检查已经分享的问题 – Amar

+0

。你期待什么? –

1

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

拍摄日期格式化或者作为日期对象,毫秒(字符串或数字)或各种ISO 8601时间字符串格式(例如YYYY-MM-DDTHH:MM:ss.sssZ和其较短版本如yyyy-MM-ddTHH:mmZ,yyyy-MM-dd或yyyyMMddTHHmmssZ)。如果在字符串输入中没有指定时区,则认为时间在本地时区。

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