Я пробовал угловые документы {{someDate | date: 'params'}}, однако; Это не работает, если someDate находится в этом формате yyyy-MM-dd HH: mm: ss.
Как мне преобразовать yyyy-MM-dd HH: mm: ss, чтобы сказать просто yyyy, используя angularjs.
4 ответа
Фильтр даты предназначен для обработки нескольких типов ввода, включая объекты даты и общие строки даты. . Если ваша строка даты не распознается предоставленным фильтром даты, я бы просто написал свой собственный фильтр. Это выглядело бы примерно так ...
myapp.filter('toYear', function () {
return function (dateString) {
var dateObject = new Date(dateString);
return dateObject.getFullYear();
};
});
Вы можете использовать это так ...
{{someDate | toYear}}
Объект даты 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"
На самом деле я исправил решение здесь:
app.filter('timestampToISO', function() {
return function(input) {
input = new Date(input).toISOString();
return input;
};
});
ОБНОВИТЬ:
Чтобы реализовать, вы добавляете это в представление:
{{someSQLTIMESTAMP | timestampToISO | date}}
Вы можете определить собственный формат следующим образом
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'
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].