yyyy spanish shortdate new angularjs datetime

angularjs - spanish - Angular: el filtro de fecha agrega la zona horaria, ¿cómo generar UTC?



new date angular 4 (4)

Estoy usando el filtro de fecha para representar una marca de tiempo de Unix en un formato determinado. Me di cuenta de que el filtro agrega la zona horaria local a la salida.

¿Hay alguna manera de simplemente generar la marca de tiempo exacta, sin agregar ninguna información de zona horaria?

Entrada:

talk.content.date_and_time = 1400167800

(es 05/15/14 a las 3:30:00 pm UTC)

Código:

{{talk.content.date_and_time*1000 | date:''dd-M-yyyy H:mm Z''}}

Salida:

15-5-2014 17:30 +0200

¿Cómo puedo hacer la salida 15:30 en lugar de las 17:30?


Acabo de usar la función getLocaleString () para mi aplicación. Debe adaptar el formato de tiempo común a la configuración regional, por lo tanto, no +0200, etc. Por supuesto, habrá menos posibilidades de controlar el ancho de la cadena.

var str = (new Date(1400167800)).toLocaleString();


Desde la versión 1.3.0 AngularJS introdujo la timezone parámetro de filtro adicional, como la siguiente:

{{ date_expression | date : format : timezone}}

Pero en las versiones 1.3.x solo la zona horaria admitida es UTC , que se puede usar de la siguiente manera:

{{ someDate | date: ''MMM d, y H:mm:ss'' : ''UTC'' }}

Desde la versión 1.4.0-rc.0 AngularJS también admite otras zonas horarias. No estaba probando todas las zonas horarias posibles, pero aquí está, por ejemplo, cómo se puede obtener la fecha en Japón Standard Time (JSP, GMT +9):

{{ clock | date: ''MMM d, y H:mm:ss'' : ''+0900'' }}

Here puede encontrar documentación de los filtros de fecha AngularJS.

NOTA: esto funciona solo con Angular 1.x

Aquí está el ejemplo de trabajo


El filtro de fecha siempre formatea las fechas usando la zona horaria local. Tendrá que escribir su propio filtro, basado en los métodos getUTCXxx() de Date , o en una biblioteca como moment.js .


La ''Z'' es lo que agrega la información de la zona horaria. En cuanto a la salida UTC, ese parece ser el tema de cierta confusión: la gente parece gravitar hacia moment.js .

Tomando prestada esta answer , podrías hacer algo como esto sin momento.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; }]);

modelo

<html ng-app="app1"> <head> <script data-require="angular.js@*" 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 this y this .

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