2016-06-23 82 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

我編輯了答案,以免誤導他人 –