Saltar al contenido

Usando el filtro de fecha AngularJS con fecha UTC

Solución:

Parece que la gente de AngularJS está trabajando en ello en la versión 1.3.0. Todo lo que necesitas hacer es agregar : 'UTC' después de la cadena de formato. Algo como:

{{someDate | date:'d MMMM yyyy' : 'UTC'}}

Como puede ver en los documentos, también puede jugar con él aquí: Ejemplo de Plunker

Por cierto, creo que hay un error con el parámetro Z, ya que todavía muestra la zona horaria local incluso con ‘UTC’.

Pregunta similar aquí

Volveré a publicar mi respuesta y propondré una combinación:

La salida UTC parece ser objeto de cierta confusión: la gente parece gravitar hacia moment.js.

Tomando prestado de esta respuesta, podría hacer algo como esto (es decir, usar una función de conversión que crea la fecha con el constructor UTC) sin moment.js:

controlador

var app1 = angular.module('app1',[]);

app1.controller('ctrl',['$scope',function($scope){

  var toUTCDate = function(date){
    var _utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),  date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
    return _utc;
  };

  var millisToUTCDate = function(millis){
    return toUTCDate(new Date(millis));
  };

    $scope.toUTCDate = toUTCDate;
    $scope.millisToUTCDate = millisToUTCDate;

  }]);

plantilla

<html ng-app="app1">

  <head>
    <script data-require="[email protected]*" data-semver="1.2.12" src="http://code.angularjs.org/1.2.12/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body>
    <div ng-controller="ctrl">
      <div>
      utc {{millisToUTCDate(1400167800) | date:'dd-M-yyyy H:mm'}}
      </div>
      <div>
      local {{1400167800 | date:'dd-M-yyyy H:mm'}}
      </div>
    </div>
  </body>

</html>

aquí está plunker para jugar con él

Vea también esto y esto.

También tenga en cuenta que con este método, si usa la ‘Z’ del filtro de fecha de Angular, parece que aún imprimirá el desplazamiento de su zona horaria local.

Aquí hay un filtro que tomará una cadena de fecha O un objeto Date () de javascript. Utiliza Moment.js y puede aplicar cualquier función de transformación de Moment.js, como la popular ‘fromNow’

angular.module('myModule').filter('moment', function () {
  return function (input, momentFn /*, param1, param2, ...param n */) {
    var args = Array.prototype.slice.call(arguments, 2),
        momentObj = moment(input);
    return momentObj[momentFn].apply(momentObj, args);
  };
});

Entonces…

{{ anyDateObjectOrString | moment: 'format': 'MMM DD, YYYY' }}

mostraría 11 de noviembre de 2014

{{ anyDateObjectOrString | moment: 'fromNow' }}

mostraría hace 10 minutos

Si necesita llamar a varias funciones de momento, puede encadenarlas. Esto se convierte a UTC y luego formatea …

{{ someDate | moment: 'utc' | moment: 'format': 'MMM DD, YYYY' }}
¡Haz clic para puntuar esta entrada!
(Votos: 1 Promedio: 3)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *