Angular Фильтр формата даты JS внутри Ng-Повторить не форматирование
Фактическая дата, исходящая от JSON
![enter image description here]()
Необходимо отформатировать его, как показано ниже.
Effective Date : 2010-08-31 (trim the time stamp)
End Date : 2010-08-31 (trim the time stamp)
Используйте приведенный ниже код для форматирования даты внутри Ng-Repeat.
<li ng-repeat="product in data | startFrom:currentPage*pageSize | limitTo:pageSize"
ng-click="getAttributes(product)">
{{product.prod_start_date| date:'MM/dd/yyyy'}}
{{product.prod_end_date| date:'MM/dd/yyyy'}}
</li>
Но он не работает, пока отображается то же самое.
Если дата должна быть передана как новая дата, как показано в приведенном ниже примере jsfiddle http://jsfiddle.net/southerd/xG2t8/
Заметьте, как это сделать внутри ng-repeat.?? Пожалуйста, помогите мне в этом. Спасибо в Advance
Ответы
Ответ 1
Я создал свой собственный фильтр, чтобы решить эту проблему.
Фильтр даты не может взять строку, нужен объект даты.
.filter('cmdate', [
'$filter', function($filter) {
return function(input, format) {
return $filter('date')(new Date(input), format);
};
}
]);
то вы можете сделать:
{{product.prod_start_date| cmdate:'MM/dd/yyyy'}}
Ответ 2
Я использую time.js для обработки времени ввода данных в UI (даже приятный пакет angular-moment
)
использование:
<span>{{product.prod_start_date | amDateFormat:'MM/dd/yyyy'}}</span>
Он имеет множество других опций, а также относительные даты и т.д.
Ответ 3
Я обновил контроллер, который вы показали на скрипке, и вот ваш обновленный фильтр
Здесь я использовал $filter ('date'), который является функцией самого Angular, чтобы отформатировать дату в желаемом формате.
Вот контроллер:
function Scoper($scope,$filter) {
$scope.s = "2012-10-16T17:57:28.556094Z";
var dateObj = new Date($scope.s);
$scope.dateToShow = $filter('date')(dateObj,'yyyy-MM-dd');
console.log($scope.dateToShow);
}