我从REST api获取以下字符串, 20160220 我想把它变成20/02/2016
我正在使用angularJS。所以我需要一个过滤器。 我试过了
app.filter('myDateFilter', function() {
return function(input) {
var st = input;
var pattern = /(\d{4})(\d{2})(\d{2})/;
var date = new Date(st.replace(pattern, '$1-$2-$3'));
return date;
}
});
在html中我使用了
<td>
{{t["due-date"] | myDateFilter}}
</td>
返回2016-02-20T00:00:00.000Z
正则表达式问题?你能不能给我一些应该用来代替的代码来生成20/02/2016。
答案 0 :(得分:1)
将Date
天真地转换为字符串会产生您看到的输出:
console.log(new Date()) // "2016-09-02T15:19:07.921Z"
&#13;
相反,请确保在返回之前手动将日期格式化为字符串。例如。考虑到浏览器的区域设置,toLocaleDateString()
会将Date
转换为字符串:
console.log(new Date().toLocaleDateString()) // "09/02/2016"
&#13;
答案 1 :(得分:0)
您正在做的是将String
转换为Date()
对象,这似乎对我而言。如果您尝试在视图中显示Date()
对象,则会获得默认日期格式。
要自定义Date()
对象所显示的格式,您需要将另一个过滤器链接到自定义过滤器。在这种情况下,您需要使用date
过滤器:https://docs.angularjs.org/api/ng/filter/date
您只需将其添加到模板中,如下所示:
<td>
{{t["due-date"] | myDateFilter | date : 'dd/MM/yyyy'}}
</td>
这种方式date
过滤器会将自定义Date()
过滤器返回的myDateFilter
对象作为输入,并生成表示该对象作为输出的String
。
这是一个很好的例子,说明如何使用角度滤波器和滤波器链接。