eme*_*his 25 javascript mysql datetime angularjs
我的日期来自数据库,看起来像这样: 2013-11-21 17:43:20
我正在尝试使用Angular的日期过滤器将它们变成更漂亮的东西,但......
{{Objected.created | date:'shortDate'}}
Run Code Online (Sandbox Code Playgroud)
要么
{{Objected.created | date:'YYYY'}}
Run Code Online (Sandbox Code Playgroud)
...只是吐出原始日期时间字符串:2013-11-21 17:43:20.没有错误.我究竟做错了什么?
更新 我发现MySQL的默认日期时间与Angular的数据过滤器所期望的不兼容.我试图像这样在飞行中转换它,但它会抛出错误:
<li ng-repeat="result in data">{{ new Date(result.Job.created).toISOString() | date:'shortDate'}}</li>
Run Code Online (Sandbox Code Playgroud)
我怀疑我不能以我正在尝试的方式实例化Date类.错误是$ parse:语法错误.
更新
感谢@ m59的帮助,我得到了一些小的调整......
HTML:
<html ng-app="myApp">
...
{{Object.created | dateToISO | date:'shortDate'}}
Run Code Online (Sandbox Code Playgroud)
JS:
var myApp = angular.module('myApp',[]);
myApp.filter('dateToISO', function() {
return function(input) {
input = new Date(input).toISOString();
return input;
};
});
Run Code Online (Sandbox Code Playgroud)
这个自定义过滤器将默认的MySQL日期时间转换为日期过滤器期望的格式,所以我发送它然后抛出另一个并且"瞧".
m59*_*m59 64
您需要将日期字符串转换为Angular支持的内容,例如ISO 8601格式.你可以像这样转换它:
$scope.Object.created = new Date($scope.Object.created).toISOString();
Run Code Online (Sandbox Code Playgroud)
要在运行中执行此操作,您需要一个自定义过滤器.现场演示(点击).
标记:
<div>{{Object.created | dateToISO | date:'shortDate'}}</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
app.filter('dateToISO', function() {
return function(input) {
return new Date(input).toISOString();
};
});
Run Code Online (Sandbox Code Playgroud)
这是一种手动转换日期的简单方法(firefox):
app.filter('badDateToISO', function() {
return function(badTime) {
var goodTime = badTime.replace(/(.+) (.+)/, "$1T$2Z");
return goodTime;
};
});
Run Code Online (Sandbox Code Playgroud)