小编典典

将AngularJS日期过滤器与UTC日期一起使用

angularjs

我有一个以毫秒为单位的UTC日期,我将该日期传递给Angular的日期过滤器以进行人工格式化。

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

很棒,除了someDate在UTC中,而且日期过滤器认为它在当地时间。

我怎样才能告诉Angular这someDate是UTC?

谢谢。


阅读 212

收藏
2020-07-04

共1个答案

小编典典

类似的问题在这里

我将重新发布我的回复并提出合并建议:

输出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”,似乎它仍会打印您的本地时区偏移量。

2020-07-04