AngularJS - 在控制器中转换日期

Ila*_*sda 111 datetime date datetime-format angularjs ng-controller

任何人都可以建议我如何将日期从这种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"]);

}]);
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

Dar*_*les 209

item.date = $filter('date')(item.date, "dd/MM/yyyy"); // for conversion to string
Run Code Online (Sandbox Code Playgroud)

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"/>
Run Code Online (Sandbox Code Playgroud)

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

注意:使用type =""with type ="date"看起来是非标准的,但它似乎在Chrome 31中以预期的方式工作.


Pra*_*obh 16

创建一个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();
    };
});
Run Code Online (Sandbox Code Playgroud)

视图

<span>{{ d.time | date }}</span>
Run Code Online (Sandbox Code Playgroud)

或在控制器中

var filterdatetime = $filter('date')( yourdate );
Run Code Online (Sandbox Code Playgroud)

Angular js中的日期过滤和格式化.