2017-01-08 5 views
0

学習プロセス中に、私はカスタムパイプの作成を作成しました。これが役立つと思いました。カスタムパイプ|角度の相対時間を計算するためのフィルタ

+0

StackOverflowのは、あなたの知識を共有することができますプラットフォームを提供します。 ** ITを見てください**。 – Aravind

+0

あなたはここにいるのですか?:http://stackoverflow.com/documentation/angular2 and this ?: http://stackoverflow.com/documentation/angular2/1165/pipes/3756/custom-pipes#t=201701091834307192505質問に投稿しましたしかし、これは問題ではありません。 – stealththeninja

+0

タイトルをはっきりと見てください。相対時間計算用のカスタムフィルタ。やっているだけのために主張しないでください。 – Aravind

答えて

3

以下はカスタムパイプのコードです。

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

@Pipe({ 
    name:'relativeTime' 
}) 

export class RelativeTimeFilterPipe implements PipeTransform{ 

    transform(inputDate:string):string{ 
     var current = new Date().valueOf(); 
     var input = new Date(parseInt(inputDate)).valueOf(); 
     var msPerMinute = 60 * 1000; 
     var msPerHour = msPerMinute * 60; 
     var msPerDay = msPerHour * 24; 
     var msPerMonth = msPerDay * 30; 
     var msPerYear = msPerDay * 365; 

     var elapsed = current - input; 

     if (elapsed < msPerMinute) { 
      return Math.round(elapsed/1000) + ' seconds ago'; 
     } 

     else if (elapsed < msPerHour) { 
      return Math.round(elapsed/msPerMinute) + ' minutes ago'; 
     } 

     else if (elapsed < msPerDay) { 
      return Math.round(elapsed/msPerHour) + ' hours ago'; 
     } 

     else if (elapsed < msPerMonth) { 
      return 'approximately ' + Math.round(elapsed/msPerDay) + ' days ago'; 
     } 

     else if (elapsed < msPerYear) { 
      return 'approximately ' + Math.round(elapsed/msPerMonth) + ' months ago'; 
     } 

     else { 
      console.log('inside the if condition', elapsed); 
      return 'approximately ' + Math.round(elapsed/msPerYear) + ' years ago'; 
     } 

    } 
} 

LIVE DEMO

関連する問題