2017-01-08 3 views
0

В процессе обучения я столкнулся с Создание пользовательской трубы, поэтому я подумал, что это поможет.Пользовательские трубы | фильтр для вычисления относительного времени в angular2

+0

Stackoverflow предоставляет платформу, где вы можете поделиться своими знаниями. **ПОСМОТРИ НА ЭТО**. – Aravind

+0

Вы имеете в виду здесь: http://stackoverflow.com/documentation/angular2 и вот это: 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

Смежные вопросы