我有一个以毫秒为单位的UTC日期,我将该日期传递给Angular的日期过滤器以进行人工格式化。
{{someDate | date:'d MMMM yyyy'}}
很棒,除了someDate在UTC中,而且日期过滤器认为它在当地时间。
someDate
我怎样才能告诉Angular这someDate是UTC?
谢谢。
类似的问题在这里
我将重新发布我的回复并提出合并建议:
输出UTC似乎引起了一些混乱-人们似乎倾向于使用moment.js。
从此答案中借用,您可以执行以下操作(即,使用带有UTC构造函数创建日期的convert函数)而无需moment.js:
控制者
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; }]);
模板
<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>
这是一个小plnkr玩
还要注意,使用此方法时,如果您使用Angular的日期过滤器中的“ Z”,似乎它仍会打印您的本地时区偏移量。