我想知道我怎么可以修改/创建自己的管道,使:日期管隐藏零
- 如果低于分钟,节目秒
- 如果低于小时,展现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