2014-05-13 5 views
0

아래에 작은 스 니펫을 제공하여 내가하려는 일을 설명 할 수는 있지만 더 복잡하기 때문에 불행히도 주 코드를 공유 할 수 없습니다. 나는 이것을 할 수있는 쉬운 방법이 있다고 생각하지만, 지금은 나를 피하고있다.AngularJS 숫자를 날짜 형식으로 변환

숫자 형식의 날짜는 있지만 날짜 필드는없는 데이터가 반환됩니다 (지금은 간단히 JSON 파일로 가정). 형식은 숫자이지만 YYYYMMDD (20140513 = 2014 년 5 월 13 일)와 같습니다. 나는 HHMMSS 인 Time과 비슷한 문제가있다. YYYYMMDDhhmmss에 타임 스탬프가 표시 될 수도 있습니다. 각 형식의 형식을 알고 있지만 사람이 읽을 수 있도록 내용을 수정하려고합니다.

5 월 13 일 (또는 다른 날짜 형식)으로 표시하고 싶습니다.

<li ng-repeat="Schedule in Dates"> 
    {{Schedule.Date | date:'medium'}} 
</li> 

내 컨트롤러 :

var App = angular.module('App', []); 
App.controller('Ctrl', function ($scope, $http) 
{ 
    $http.get('Data/Schedule.json').success(function(data) { 
     $scope.Dates = data; 
    }); 
    $scope.OrderBy = 'date'; 
}); 

샘플 JSON

당신은 ISO8601 형식을 다음과 같은 것 또는, 당신은 날짜를 사용할 수 없습니다 Date 객체 아니라면
[ 
{ 
    "id": 13, 
    "date": 20140807, 
    "time": "18:30", 
    "park": 4, 
    "Home": 5, 
    "Away": 2 
}, 
{ 
    "id": 14, 
    "date": 20140814, 
    "time": "18:30", 
    "park": 3, 
    "Home": 2, 
    "Away": 6 
} 
] 

답변

1

이 잘 작동합니다. 예를 들어, "2014-08-07"은 샘플 코드에서 정당한 변환을 수행합니다. 당신은 당신이 $의 HTTP 요청에서 다시 데이터를 읽을 때

이 형식으로 날짜 속성을 변환이 문제를 여러 가지 방법을 해결 할 수 있습니다

App.controller('Ctrl', function ($scope, $http) { 
    $http.get('Data/Schedule.json').success(function(data) { 
     $scope.Dates = data.map(function(object) { 
      object.date = << convert date >>; 
      return object; 
     }); 
    }); 
}); 

하거나, 입력을에 변환 자신의 필터를 쓰기 fly :

App.filter('myDateFilter', function(){ 
    return function(input, format) { 
     var convertedDate = << convert input >> 
     return $filter('date')(convertedDate, format); 
    } 
}); 
+0

이것을 올바르게 읽으면 코드가 << 변환 날짜 >> (구문 분석 로직이 추가됨)로 각 행의 날짜 요소를 변환하고 필요에 따라 다른 필드의 서식을 지정할 수도 있습니다. 감사. –

+0

그래, 근본적으로 여기서 문제를 처리하기위한 프레임 워크를 제공했지만 주어진 형식을 각도/자바 스크립트가 적절한 날짜 형식으로 인식하도록 실제 코드를 변환하는 것이 아닙니다. – mbroadst

1

필터. 내 제안은 올바른 형식으로 데이터가 반환되도록 변경하거나 직접 구문 분석 할 수있는 필터를 작성하는 것입니다.

<li ng-repeat="Schedule in Dates"> 
    {{Schedule.Date | customDate}} 
</li> 

그리고 필터 : 당신이 인식 할 수있는 형식으로 날짜를 변환 할 수 있습니다 경우

var App = angular.module('App', []); 
App.filter('customDate', function(){ 
    return function(numericDateTime){ 
     //TODO: Custom date logic 
    } 
}); 
+0

이것을 읽으면 customDate 필터가 내장 날짜 대신 사용되어 원하는 필드를 변경할 수있는 것처럼 보입니다. 그런 다음 시간이 지나면 형식 지정을 처리 할 다른 필터를 만들어 다른 App.filter()로 추가합니다. 옳은? –

+1

동일한 필터를 사용하여 전달 된 동일한 값에서 시간과 날짜를 찾거나, Schedule.Date 필드에 저장되지 않은 경우 시간을 저장하는 방법에 대한 별도의 필터를 만들 수 있습니다. –

+0

솔루션을 제공해 주셔서 감사합니다. 이것은 작동하지만, @mbroadst를 받아 들일 수 있습니다. 메인 객체의 데이터를 변경할 수있게 해 주므로이 필터 이외의 다른 것들에도 사용할 수 있습니다. 답변을 주셔서 감사 드리며 문제를 해결하기 위해 노력했습니다. 도움이 될 +1. –

관련 문제