Edi*_*ang 22 javascript format json date angularjs
我的json响应看起来像这样:
[{"Id":"dab4580b-e24d-49f8-9fd5-2e968b10d3b5","Title":"MVVM-Sidekick ??","CreatedOn":"\/Date(1390272893353)\/","IsChecked":false},{"Id":"66a0f134-e240-4cc4-96fa-ac3807853ca7","Title":"Windows Phone ????","CreatedOn":"\/Date(1390018447080)\/","IsChecked":false}]
Run Code Online (Sandbox Code Playgroud)
"CreatedOn"日期采用以下格式:'/ Date(1390272893353)/'
当我将此结果绑定到html表时,日期无法格式化:
<td>{{item.CreatedOn | date: 'yyyy-MM-dd HH:mm'}}</td>
Run Code Online (Sandbox Code Playgroud)
仍然给我:
/日期(1390272893353)/
我不想更改服务器端的任何代码(不要修改json字符串),格式化这个日期的最佳方法是什么?
Tec*_*ech 29
我实际上把@Charminbear和@Nikos的答案结合在这个过滤器中,这个过滤器工作得非常好,并且在没有正则表达式的情况下非常清楚:
myApp.filter("jsDate", function () {
return function (x) {
return new Date(parseInt(x.substr(6)));
};
});
Run Code Online (Sandbox Code Playgroud)
这使得写入成为可能
{{ $scope.item.CreatedOn | jsDate | date:"yyyy-MM-dd" }}
Run Code Online (Sandbox Code Playgroud)
Nik*_*los 22
一种选择是编写另一个过滤器并将其放入链中.例如:
app.filter("mydate", function() {
var re = /\/Date\(([0-9]*)\)\//;
return function(x) {
var m = x.match(re);
if( m ) return new Date(parseInt(m[1]));
else return null;
};
});
Run Code Online (Sandbox Code Playgroud)
基本上它使用正则表达式来解析字符串并制作一个Date(如果格式与显示的格式不同,则必须调整正则表达式).
用它作为:
<td>{{item.CreatedOn | mydate | date: 'yyyy-MM-dd HH:mm'}}</td>
Run Code Online (Sandbox Code Playgroud)
我知道我迟到了.但我想告诉我有什么帮助: -
<td>{{item.yourdatefield.slice(6,-2) | date:'dd-MMM-yyyy' }}</td>
Run Code Online (Sandbox Code Playgroud)
希望它能帮助像我这样懒惰的程序员.:)
Angular日期过滤器需要一个JS日期。因此,您需要先解析JSON日期,然后再将其提供给过滤器。
尝试这个:
<td>{{item.CreatedOnParsed | date: 'yyyy-MM-dd HH:mm'}}</td>
Run Code Online (Sandbox Code Playgroud)
然后在响应的回调方法中,执行以下操作:
$scope.item.CreatedOnParsed = new Date(parseInt(item.CreatedOn.substr(6)));
Run Code Online (Sandbox Code Playgroud)
如本答案所示
编辑 正如您的帖子评论所看到的,即使时间戳对于Date-Filter也足够,所以即使这样也应该足够:
$scope.item.CreatedOnParsed = item.CreatedOn.substr(6);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44361 次 |
| 最近记录: |