Answers:
v.Dt可能不是Date()对象。
参见http://jsfiddle.net/southerd/xG2t8/
但在您的控制器中:
scope.v.Dt = Date.parse(scope.v.Dt);
您的代码应该可以正常运行,就像看到这种小提琴一样。
不过,您必须确保自己v.Dt
是一个正确的Date对象,它才能正常工作。
{{dt | date:'yyyy-MM-dd HH:mm:ss Z'}}
或在范围中将dateFormat定义为dateFormat ='yyyy-MM-dd HH:mm:ss Z':
{{dt | date:dateFormat }}
Date
变量的类型。时间戳记也很有效
我知道这是一个旧项目,但以为我会考虑其他选择。
由于原始字符串不包含“ T”标记,因此Angular中的默认实现无法将其识别为日期。您可以使用新的Date强制使用它,但这在数组上有点麻烦。由于可以将过滤器一起管道传输,因此您可以使用过滤器将输入转换为日期,然后在转换后的日期上应用date:过滤器。创建一个新的自定义过滤器,如下所示:
app
.filter("asDate", function () {
return function (input) {
return new Date(input);
}
});
然后在标记中,可以将过滤器通过管道传递到一起:
{{item.myDateTimeString | asDate | date:'shortDate'}}
您可以像这样获得“日期”过滤器:
var today = $filter('date')(new Date(),'yyyy-MM-dd HH:mm:ss Z');
这将以您想要的格式为您提供今天的日期。
这是一个采用日期字符串或javascript Date()对象的过滤器。它使用Moment.js并可以应用任何Moment.js转换功能,例如流行的'fromNow'
angular.module('myModule').filter('moment', function () {
return function (input, momentFn /*, param1, param2, ...param n */) {
var args = Array.prototype.slice.call(arguments, 2),
momentObj = moment(input);
return momentObj[momentFn].apply(momentObj, args);
};
});
所以...
{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}
将显示2014年11月11日
{{ anyDateObjectOrString | moment: 'fromNow' }}
将在10分钟前显示
如果需要调用多个矩函数,可以将它们链接起来。这将转换为UTC,然后进行格式化...
{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}
以下是一些受欢迎的示例:
<div>{{myDate | date:'M/d/yyyy'}}</div>
2014年7月4日
<div>{{myDate | date:'yyyy-MM-dd'}}</div>
2014-07-04
<div>{{myDate | date:'M/d/yyyy HH:mm:ss'}}</div>
2014年7月4日12:01:59
我建议您使用moment.js,它根据语言环境对日期格式有很好的支持。
创建一个内部使用moment.js方法设置日期格式的过滤器。