我有一个网页调用一些PHP api并呈现结果 PHP查询MySQL数据库并返回使用AngularJS指令和过滤器反序列化和格式化的JSON对象。
问题上升,因为AngularJS日期过滤器不直接支持MySql日期 所以我写了这个
angular.module(...)
.filter('mysqlDateToISO', function() {
return function(input) {
input = new Date(input).toISOString();
return input;
};
});
和HTML部分看起来像
<p>
Pubblicato il
{{arg.pubblicato_il | mysqlDateToISO
| date:"dd MMM yyyy 'alle ore' HH:mm:ss"}}
</p>
Chrome可以正确呈现结果:
Pubblicato il 2015年3月25日alle ore 16:01:00
Firefox而不是:
Pubblicato il {{arg.pubblicato_il | mysqlDateToISO |日期:&#34; dd MMM yyyy &#39; alle ore&#39; HH:MM:SS&#34;}}
Firefox控制台显示此错误
RangeError:无效日期
错误来自input = new Date(input).toISOString()
我该如何解决?
答案 0 :(得分:2)
您可以使用另一种方法来解析日期字符串,例如Moment:http://momentjs.com/,方法是指定mysql日期字符串格式,然后提供输出格式。
以下是一个例子:
moment("20111031", "YYYYMMDD").format("dd MMM YYYY [alle ore] HH:mm:ss")
用mysql日期格式替换20111031的mysql日期序列化和YYYMMDD。
使用时刻将有助于对浏览器日期实施更加不可知
更完整的例子:
angular.module(...)
.filter('mysqlDateToISO', function() {
return function(input) {
var result = moment(input, "YYYY-MM-DD HH:mm:ss")
.format("DD MMMM YYYY [alle ore] HH:mm:ss");
return result;
};
});