2016-06-23 8 views
0

Ich frage mich, wie kann ich mein eigenes Rohr ändern/erstellen, so dass:Datum Rohr Nullen verstecken

  1. , wenn weniger als eine Minute, zeigen Sekunden
  2. , wenn weniger als Stunde, mm zeigen: ss
  3. , wenn weniger als 1 Stunde, zeigen hh: mm: ss

ich weiß, dass, wenn ich uSDE:

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

Vielleicht werfen Sie einen Blick auf https://github.com/jsmreese/moment-duration-format – rinukkusu

+1

Sie verwenden keine Datumsobjekte für * Dauer * Werte, bist du? – deceze

+0

@deceze, Ich benutze Zeitstempel – uksz

Antwort

2

Da die eckige Rohrleitung eine JS-Klasse mit einem Dekorator ist, können Sie sie immer noch direkt verwenden. In Ihrem Fall können Sie Ihr eigenes Rohr implementieren, das Winkelrohr wie dies in der Art und Weise-in gebaut werden verwenden:

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

So gehen sie:

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 
    } 
} 

Dann können Sie es als regelmäßiges Rohr verwenden können .

+0

Woher kommen 'Minute' und' Stunde' in deinen 'if's? – rinukkusu

+0

Schauen Sie sich die Kommentare an - es ist nicht der eigentliche Code, sondern nur die Idee. Ich weiß nicht, wie genau der Autor die Variable übergeben möchte (als Date oder als Timestamp). –

+1

Ich habe die Antwort bearbeitet, um andere nicht zu täuschen –