1. ホーム
  2. angularjs

[解決済み] AngularJS - コントローラで日付を変換する

2022-05-13 10:41:21

質問

どなたか、以下の日付の変換方法を教えてください。 1387843200000 形式からこの 24/12/2013 コントローラ内 ?

参考までに、私の日付はこのように保存されています & 編集フォームにバインドする際に input type="date" フィールドが全く入力されません。

#Plunker のデモはこちらです。

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>

どのように解決するのですか?

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 が使用されなければなりません(MUST)。

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

注: type="date" での pattern="" の使用は非標準に見えますが、Chrome 31 では期待通りの方法で動作するようです。