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

Squ*_*ler 33 datetime angularjs

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

有没有办法简单地输出确切的时间戳,而不添加任何时区信息?

输入:

talk.content.date_and_time = 1400167800 
Run Code Online (Sandbox Code Playgroud)

(是05/15/14 @ 3:30:00 pm UTC)

码:

{{talk.content.date_and_time*1000 | date:'dd-M-yyyy H:mm Z'}}
Run Code Online (Sandbox Code Playgroud)

输出:

15-5-2014 17:30 +0200
Run Code Online (Sandbox Code Playgroud)

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

edu*_*inn 88

由于版本1.3.0AngularJS引入了额外的过滤器参数timezone,如下所示:

{{ date_expression | date : format : timezone}}
Run Code Online (Sandbox Code Playgroud)

但是在版本中1.3.x只支持时区UTC,可以使用如下:

{{ someDate | date: 'MMM d, y H:mm:ss' : 'UTC' }}
Run Code Online (Sandbox Code Playgroud)

由于版本1.4.0-rc.0AngularJS也支持其他时区.我没有测试所有可能的时区,但这里是例如你如何在日本标准时间(JSP,GMT +9)获得日期:

{{ clock | date: 'MMM d, y H:mm:ss' : '+0900' }}
Run Code Online (Sandbox Code Playgroud)

在这里,您可以找到AngularJS日期过滤器的文档.

注意:这仅适用于Angular 1.x.

这是工作示例


oss*_*sek 31

'Z'是添加时区信息的原因.至于输出UTC,这似乎是一些混乱的主题 - 人们似乎倾向于时刻.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;

  }]);
Run Code Online (Sandbox Code Playgroud)

模板

<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>
Run Code Online (Sandbox Code Playgroud)

这里的plunker发挥它

另见这个这个.

另请注意,使用此方法,如果使用Angular的日期过滤器中的"Z",它似乎仍将打印您的本地时区偏移量.

  • 您可以像其他人提出的那样将"millisToUTCDate"合并到过滤器中,而不是控制器中的功能. (2认同)