我已经尝试了{{someDate |的角度文档date:'params'}};如果someDate的格式为yyyy-MM-dd HH:mm:ss,则不起作用。
我如何使用angularjs转换yyyy-MM-dd HH:mm:ss说yyyy。
答案 0 :(得分:2)
日期过滤器旨在处理multiple input types,包括日期对象和常用日期字符串。如果提供的日期过滤器无法识别您的日期字符串,我只会编写自己的过滤器。它看起来像这样......
myapp.filter('toYear', function () {
return function (dateString) {
var dateObject = new Date(dateString);
return dateObject.getFullYear();
};
});
你可以像这样使用它......
{{someDate | toYear}}
答案 1 :(得分:0)
您可以按如下方式定义自定义格式
Date.prototype.customFormat = function(){
return this.getMonth() +
"/" + this.getDate() +
"/" + this.getFullYear();
}
//usage
> var d = new Date()
Fri Mar 14 2014 15:39:07 GMT+0000 (GMT Standard Time)
> d.customFormat()
'2/14/2014'
更多详情https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
答案 2 :(得分:0)
我实际上在这里修复了解决方案:
app.filter('timestampToISO', function() {
return function(input) {
input = new Date(input).toISOString();
return input;
};
});
更新:
要实现,请将其添加到视图中:
{{someSQLTIMESTAMP | timestampToISO | date}}
答案 3 :(得分:0)
Angular js日期对象不支持直接从MySql日期格式转换为时间戳。因此,需要将其从YYYY-mm-dd H:i:s
转换为YYYY/mm/dd H:i:s
,然后将其转换为时间戳。
您可以尝试使用以下代码段将Mysql日期格式YYYY-mm-dd H:i:s
转换为使用AngularJs过滤器的时间戳
app.filter("mysqlDateFormatToTimestamp", function(){
return function(date){
var date1 = date2 = date3 = timestamp = hours = minutes = seconds = '';
date1 = date.split(':');
date2 = date1[0].split(' ');
date3 = date2[0].split('-'); // Change it based on your format
if( date1.length == 1 && date2.length == 1 ){
hours = '00';
minutes = '00';
seconds = '00';
}else{
hours = parseInt(date2[1]);
minutes = parseInt(date1[1]);
seconds = parseInt(date1[2]);
}
timestamp = new Date(parseInt(date3[0]), parseInt(date3[1])-1, parseInt(date3[2]), hours, minutes, seconds);
return timestamp;
}
});
现在,您可以在所需的日期格式中使用此过滤器,并且可以根据需要更改参数。
{{ '2016-07-07 05:27:30' | mysqlDateFormatToTimestamp | date:'LLLL dd, yyyy HH:mm:ss'}}
// results would comes like "July 07, 2016 05:27:30"
{{ '2016-07-07 05:27:30' | mysqlDateFormatToTimestamp | date:'yyyy'}}
// results would comes like "2016"