AngularJS-Konwertuj daty w kontrolerze

Czy ktoś mógłby mi podpowiedzieć jak przekonwertować datę z tego 1387843200000 formatu na ten 24/12/2013 w moim kontrolerze ?

Tylko FYI moje daty są zapisywane w ten sposób & gdy powiązanie edycji formularza z input type="date" pole nie jest wypełniane w ogóle.

#Demo Plunkera tutaj.

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>
Author: Saju S J, 2013-11-22

4 answers

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

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

Ale jeśli używasz HTML5 type="date", należy użyć formatu 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

Uwaga: użycie pattern= ""with type = "date" wygląda na niestandardowe, ale wydaje się działać w oczekiwany sposób w Chrome 31.

 197
Author: Darryl Miles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-21 22:02:21

Utwórz filtr.js i możesz zrobić to jako wielokrotnego użytku

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();
    };
});

Widok

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

Lub w kontrolerze

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

Filtrowanie i formatowanie dat w Angular js.

 17
Author: Prashobh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-08 10:06:12

Wszystkie rozwiązania tutaj tak naprawdę nie wiążą modelu z danymi wejściowymi, ponieważ będziesz musiał zmienić dateAsString, aby być zapisanym jako date w Twoim obiekcie(w kontrolerze po przesłaniu formularza).

Jeśli nie potrzebujesz efektu wiązania, ale tylko po to, aby pokazać go na wejściu,

Proste może być:

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

Następnie, jeśli chcesz, w kontrolerze możesz zapisać edytowaną datę w ten sposób:

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

Bądź świadomy: w swoim kontrolerze, ty aby to zadziałało, musisz zadeklarować swoją zmienną item jako $scope.item.

 1
Author: Dudi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-25 15:42:47

Proponuję w Javascript:

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

I wtedy date1 jest datą.

 1
Author: BrianPando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-14 01:59:52