为什么角度日期过滤器每小时增加2个?

RPG*_*RPG 3 angularjs

我使用角度'日期'过滤器在角度js中创建了持续时间计时器.由于某种原因,小时部分以'2'而不是'0'开头.

我正在使用这样的过滤器

 {{runningDuration | date:'HH:mm:ss'}}  
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/rpg2kill/vNdpu/

我究竟做错了什么?

Liv*_* T. 10

这是因为您希望格式化日期,但将日期之间差异作为整数传递给它.Angular然后假定你想要new Date(runningDuration).

您可以使用过滤器将日期转换为utc(这可能需要更多的角落案例处理,而不仅仅是数字和日期).演示

JS

myApp.filter('utc', [function() {
    return function(date) {
      if(angular.isNumber(date)) {
        date = new Date(date);
      }
      return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),  date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());
    }   
  } ]);
Run Code Online (Sandbox Code Playgroud)

HTML

{{runningDuration | utc | date:'HH:mm:ss'}}
Run Code Online (Sandbox Code Playgroud)