一尘不染

角度:日期过滤器添加了时区,如何输出UTC?

angularjs

我正在使用日期过滤器以某种格式呈现Unix时间戳。我注意到过滤器将本地时区添加到输出中。

有什么方法可以简单地输出确切的时间戳,而无需添加任何时区信息?

输入:

talk.content.date_and_time = 1400167800

(是世界标准时间下午05/15/14 @ 3:30:00)

码:

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

输出:

15-5-2014 17:30 +0200

我如何使输出从15:30而不是17:30?


阅读 222

收藏
2020-07-04

共1个答案

一尘不染

“ Z”是添加时区信息的内容。至于输出UTC,这似乎是一些混乱的主题-人们似乎倾向于使用moment.js

从此答案中]借用,您可以在没有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>

这是一个小矮人

还要注意,使用此方法时,如果您使用Angular的日期过滤器中的“Z”,似乎它仍会打印您的本地时区偏移量。

2020-07-04