在尝试inbuilt angularjs date filter格式化日期字符串时,我没有获得" 2016-05-17 14:45:59 + 04",
的格式化日期请参阅plunkr https://plnkr.co/edit/VzRpNFkrWasv3nPlIQyg?p=preview,
请帮助我理解它为什么工作,当我解析字符串时我得到了正确的日期对象" 2016-05-17 14:45:59 + 04"使用见截图
提前感谢您的帮助。
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-example101-production</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
</head>
<body ng-app="">
<span ng-non-bindable>{{2016-05-17 14:45:59+04 | date:'yyyy-MM-dd'}}</span>:
<span>{{'2016-05-17 14:45:59+04' | date:'yyyy-MM-dd'}}</span><br>
</body>
</html>
<!--
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
-->
&#13;
答案 0 :(得分:3)
使用Javascript Date
对象,而不是将其作为字符串传递。
//控制器中的某个地方
$scope.dt = new Date('2016-05-17 14:45:59+04');
//在HTML中
<span>{{dt | date:'yyyy-MM-dd'}}</span>
你也可以编写自定义过滤器来完成它,你已经完成了。
此处的关键点是使用Javascript Date
对象
答案 1 :(得分:2)
您应该使用符合ISO 8601标准的日期/时间格式:
<span>{{'2016-05-17T14:45:59+04:00' | date:'yyyy-MM-dd'}}</span><br>
答案 2 :(得分:1)
来自link that you provided的引用,在使用情况&gt;下参数:
格式化日期对象,毫秒(字符串或数字)的日期 或各种ISO 8601日期时间字符串格式(例如 yyyy-MM-ddTHH:mm:ss.sssZ及其较短的版本 yyyy-MM-ddTHH:mmZ,yyyy-MM-dd或yyyyMMddTHHmmssZ)。如果没有时区 在字符串输入中指定,时间被认为是在 当地时区。
因此,请为日期字符串选择不同的格式,例如:
2016-05-17T14:45:59.000+0400
答案 3 :(得分:0)
如果您想避免在每次必须处理日期时被迫在控制器中执行new Date()
,您可以使用过滤器自动将日期转换为new Date()
:
angular
.module('myApp')
.filter('toNewDate', toNewDate);
function toNewDate() {
return toNewDateFilter;
////////////////
function toNewDateFilter(date) {
return new Date(date);
}
}
现在您可以通过您的应用程序使用它并节省大量时间(例如,当您从Web服务接收日期时):
<span class="date">{{post.created_at| toNewDate | date: 'dd MMMM yyyy'}}</span>