yyyy new angularjs date datetime datetime-format ng-controller

new - AngularJS-convierte las fechas en el controlador



new date() angularjs (4)

Todas las soluciones aquí no vinculan realmente el modelo con la entrada porque tendrá que volver a cambiar la dateAsString para guardarse como date en su objeto (en el controlador después de que se dateAsString el formulario).

Si no necesita el efecto vinculante, solo para mostrarlo en la entrada,

un simple podría ser:

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

Luego, si lo desea, en el controlador, puede guardar la fecha editada de esta manera:

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

tenga en cuenta: en su controlador, debe declarar su variable de item como $scope.item para que esto funcione.

¿Alguien podría sugerirme cómo convertir la fecha de este formato 1387843200000 a este 24/12/2013 dentro de mi controlador ?

Solo para tu información, mis fechas se almacenan de esta manera y cuando se vincula a la forma de edición con input type="date" campo input type="date" no se está rellenando.

#Plunker demo aquí.

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 - plantilla

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


crea un filter.js y puedes hacer esto como reutilizable

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

ver

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

o en el controlador

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

Fecha de filtrado y formateo en jus angular


sugiero en Javascript:

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

y luego date1 es una Fecha.


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

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

Pero si usa HTML5 type = "date", entonces DEBE usarse el formato ISO aaaa-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

NOTA: el uso de pattern = "" con type = "date" parece no estándar, pero parece funcionar de la manera esperada en Chrome 31.