AngularJS - 在控制器中转换日期 [英] AngularJS - convert dates in controller

查看:202
本文介绍了AngularJS - 在控制器中转换日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都可以建议我如何将这个 1387843200000 格式的日期转换成这个 24/12/2013 在我的控制器内部



只要FYI,我的日期以这种方式存储&当绑定到编辑表单与 input type =date字段没有被填充。



#Plunker演示此处。



EditCtrl

 控制器(EditCtrl,[$ scope,$ filter,db)($ scope,$ filter,db){

//这样可以得到一个项目对象
var item = db.readItem();

// item date = 1387843200000
//返回undefined
item.date = $ filter('date')(date [item.date,dd / MM / yyyy]);

}]);

Edit.html - 模板

 < form name =editFormclass =form-validate> 

< div class =form-group>
< label for =date>事件日期< / label>
< input type =dateclass =form-controlng-model =event.dateid =daterequired />
< / div>

< a href =#/class =btn btn-danger>取消< / a>
< button id =addEventclass =btn btn-primary pull-rightng-disabled =isClean()|| editForm。$ invalidng-click =saveEvent()>事件。< / button>

< / form>


解决方案

  date = $ filter('date')(item.date,dd / MM / yyyy); //转换成字符串

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



但是如果您使用的是HTML5 type =date,则必须使用ISO格式yyyy-MM-dd。

 项目。 dateAsString = $ filter('date')(item.date,yyyy-MM-dd); // for type =datebinding 


< input type =dateng-model =item.dateAsStringvalue ={{item.dateAsString}} =dd / MM / YYYY/>

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



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


Could anyone please suggest me how to convert date from this 1387843200000 format into this 24/12/2013 inside my controller?

Just FYI my dates are stored in this way & when binding to edit form with input type="date" field is not being populated at all.

#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 - template

<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

But if you are using HTML5 type="date" then the ISO format yyyy-MM-dd MUST be used.

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

NOTE: use of pattern="" with type="date" looks non-standard, but it appears to work in the expected way in Chrome 31.

这篇关于AngularJS - 在控制器中转换日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆