我想知道我怎麼可以修改/創建自己的管道,使:日期管隱藏零
- 如果低於分鐘,節目秒
- 如果低於小時,展現MM:SS
- 如果小於1小時,顯示爲hh:mm:ss的
我知道,當我USDE:
{{ dateObj | date:'hhmmss' }} // output is '00:00:11' when timestamp is 11s;
我想知道我怎麼可以修改/創建自己的管道,使:日期管隱藏零
我知道,當我USDE:
{{ dateObj | date:'hhmmss' }} // output is '00:00:11' when timestamp is 11s;
由於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
}
}
然後你可以使用它作爲一個經常性管。
'分鐘'和'小時'來自你的'if's? – rinukkusu
看看評論 - 這不是實際的代碼,只是想法。我不知道作者想如何傳遞變量(作爲日期或時間戳)。 –
我編輯了答案,以免誤導他人 –
也許看看https://github.com/jsmreese/moment-duration-format – rinukkusu
你沒有使用* duration *值的日期對象,對嗎? – deceze
@deceze,我正在使用時間戳 – uksz