2016-06-23 46 views
0

我想知道我怎么可以修改/创建自己的管道,使:日期管隐藏零

  1. 如果低于分钟,节目秒
  2. 如果低于小时,展现MM:SS
  3. 如果小于1小时,显示为hh:mm:ss的

我知道,当我USDE:

{{ dateObj | date:'hhmmss' }}  // output is '00:00:11' when timestamp is 11s; 
+0

也许看看https://github.com/jsmreese/moment-duration-format – rinukkusu

+1

你没有使用* duration *值的日期对象,对吗? – deceze

+0

@deceze,我正在使用时间戳 – uksz

回答

2

由于Angular pipe是一个带有一些装饰器的JS类,你仍然可以直接使用它。你的情况,你可以实现自己的管道,将使用内置角管的方式是这样的:

new DatePipe().transform(myDate, 'hhmmss'); 

所以,让我们:

import { Pipe, PipeTransform } from '@angular/core'; 
import { DatePipe } from '@angular/common'; 

@Pipe({name: 'my-duration'}) 
export class MyDurationPipe implements PipeTransform { 
    transform(value: Date): string { 
    if (/* time difference is less than minute */) { // add your comparison to get minutes 
     return new DatePipe().transform(value, 'ss'); 
    } 
    else if (/* time difference is less than hour */) { // the same for hours etc. 
     return new DatePipe().transform(value, 'mm:ss'); 
    } 
    // and so on 
    } 
} 

然后你可以使用它作为一个经常性管。

+0

'分钟'和'小时'来自你的'if's? – rinukkusu

+0

看看评论 - 这不是实际的代码,只是想法。我不知道作者想如何传递变量(作为日期或时间戳)。 –

+1

我编辑了答案,以免误导他人 –