2013-11-21 3 views
93

아무도이 1387843200000 형식으로 날짜를 24/12/2013내 컨트롤러으로 변환하는 방법을 제안 할 수 있습니까?AngularJS - 컨트롤러의 날짜를 변환하십시오.

input type="date" 필드가있는 편집 양식에 대한 바인딩이 전혀 채워지지 않을 때이 날짜는 &으로 저장됩니다.

#Plunker demo here.

EditCtrl

app.controller("EditCtrl", [ "$scope", "$filter", "db" function ($scope, $filter, db){ 

    // this gets me an item object 
    var item = db.readItem(); 

    // item date = 1387843200000 
    // this returns undefined 
    item.date = $filter('date')(date[ item.date, "dd/MM/yyyy"]); 

}]); 

Edit.html - 템플릿

<form name="editForm" class="form-validate"> 

     <div class="form-group"> 
      <label for="date">Event date.</label> 
      <input type="date" class="form-control" ng-model="event.date" id="date" required /> 
     </div> 

     <a href="#/" class="btn btn-danger ">Cancel</a> 
     <button id="addEvent" class="btn btn-primary pull-right" ng-disabled="isClean() || editForm.$invalid" ng-click="saveEvent()">Save event.</button> 

    </form> 
+1

왜 컨트롤러로 변환해야합니까? 표시 가능한 값이 필요한 경우 날짜 필터를 사용하여보기의 날짜 형식을 지정할 수 있습니다. –

+0

@JustinNiessner - 내 날짜가 이러한 방식으로 저장되며'input type = "date"필드가 편집 양식에 바인딩 될 때 – Iladarsda

+1

moment.js angularjs date time 필터를 사용할 수 있습니다 - https://github.com/urish/angular-moment – virender

답변

188
item.date = $filter('date')(item.date, "dd/MM/yyyy"); // for conversion to string 

http://docs.angularjs.org/api/ng.filter:date

HTML5 type = "date"를 사용하는 경우 ISO 형식 yyyy-MM-dd를 사용해야합니다.

item.dateAsString = $filter('date')(item.date, "yyyy-MM-dd"); // for type="date" binding 


<input type="date" ng-model="item.dateAsString" value="{{ item.dateAsString }}" pattern="dd/MM/YYYY"/> 

http://www.w3.org/TR/html-markup/input.date.html

참고 : 패턴의 사용 = "날짜"비표준를 보이지만,을 만들

+0

고맙습니다. ISO 형식 및 문자열 형식은 유용한 팁입니다. 나는 이것을 조심 할 것이다. – Iladarsda

+0

안녕하세요, 제안대로 구현하려고했지만 그것은 나를 위해 작동하지 않습니다. – Mukun

+0

안녕하세요, 제안대로 구현하려고했지만 그것은 나를 위해 작동하지 않습니다. spring webservice의 나의 응답은 { "basicPersonalInfo": { "empNo": "04005001", "dob": 490645800000}, "communicationInfo": null}이며, 부트 스트랩/HTML5 날짜 입력 필드에 표시해야합니다. 내 컨트롤러의 필터를 \t $ scope.basicInfo = BasicInformationService.query();와 같이 사용했습니다. \t \t \t $ scope.basicInfo. $ promise.then (기능 (데이터) {\t \t \t \t \t $ scope.basicInfo.basicPersonalInfo.dob = $ 필터 ('날짜') (data.basicPersonalInfo.dob "YYYY-MM -dd "), }); 어떤 도움을 주시면 감사하겠습니다. – Mukun

16

크롬 31에서 예상되는 방식으로 작동 보인다 "=이 유형" filter.js 당신은 재사용

angular.module('yourmodule').filter('date', function($filter) 
{ 
    return function(input) 
    { 
     if(input == null){ return ""; } 
     var _date = $filter('date')(new Date(input), 'dd/MM/yyyy'); 
     return _date.toUpperCase(); 
    }; 
}); 

보기로이 작업을 할 수 있습니다

<span>{{ d.time | date }}</span> 
0

또는 컨트롤러에

var filterdatetime = $filter('date')(yourdate); 
여기

Date filtering and formatting in Angular js.

+1

AngularJS에 이미 날짜 필터가 내장되어있는 것 같습니다. https://docs.angularjs.org/api/ng/filter/date –

+0

감사합니다! 나에게 새로운 날 사용은 트릭을 만들었다. – butYouDontLookLikeADeveloper

1

모든 솔루션은 당신이 당신의 객체에 date로 저장하는 dateAsString 다시 변경해야하기 때문에 정말 입력 모델을 결합하지 않는다 (의 양식을 제출 한 후 컨트롤러가 제출됩니다).

당신이 결합 효과를 필요로하지 않지만, 단지 입력에 보여 경우

간단한이 될 수있다 :

<input type="date" value="{{ item.date | date: 'yyyy-MM-dd' }}" id="item_date" /> 

그런 다음 컨트롤러에서, 좋아하는 경우에, 당신에게 이런 방식으로 편집 한 날짜를 저장할 수 있습니다

$scope.item.date = new Date(document.getElementById('item_date').value).getTime(); 

것은주의 :을 컨트롤러에 사용하려면 item 변수를 $scope.item으로 선언해야합니다.

1

내가 자바 스크립트에서 제안 :

var item=1387843200000; 
var date1=new Date(item); 

다음 날짜 1이 날짜입니다.

+0

예, 우리의 타임 스탬프를 현재 날짜로 변환하고자하는 귀하의 권리 –

관련 문제