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