2016-11-15 4 views
0

Я пытаюсь собрать приложение чата, и я никогда не занимался моментами. В основном я хочу, чтобы он показывал, что комментарий был опубликован несколько секунд назад, минут назад, часами назад .. но тогда мне нужно просто показать дату, а не 1 день назад, 2 дня назад и т. Д. ...Moment JS Angular 2 - после 24 часов просто показывайте нормальную дату

I я использую angular2 для создания приложения (также совершенно нового для него), а дело с объектами дат javascript - это непростая задача. Кто-нибудь когда-либо делал это раньше? не говоря уже о Angular2 .. я попытался следующие, но что-то не горит .. нет ошибок, но его просто не его расчета правильно

@Pipe({ 
    name: 'formatDate2' 
}) 
export class DatePipe2 implements PipeTransform { 
    transform(value: any, args?: any): any { 

      let result:string; 
      // current time 
      let now = new Date().getTime(); 

      // time since message was sent in seconds 
      let delta = (now - value)/1000; 
      console.log(delta); 
      // format string 
      if (delta < 10) { 
       result = 'jetzt'; 
      } else if (delta < 60) { // sent in last minute 
       result = 'vor ' + Math.floor(delta) + ' Sekunden'; 
      } else if (delta < 3600) 
      { // sent in last hour 
       result = 'vor ' + Math.floor(delta/60) + ' Minuten'; 
      } else if (delta < 86400) { // sent on last day 
       result = 'vor ' + Math.floor(delta/3600) + ' Stunden'; 
      } else { // sent more than one day ago 
       result = 'vor ' + Math.floor(delta/86400) + ' Tagen'; 
      } 
      return result; 

    } 
} 
+2

Что точное соотношение между momentjs и ваш вопрос? Он никогда не использовался ... – baao

ответ

0

Как вы добавили это с momentjs, вот как вы могли бы сделать то, что вы» re после с моментами. Вы можете включить локализованную версию momentjs для отображения немецких сообщений.

var tenSecAgo = moment().subtract(10, "seconds"); 
 
var twoDayAgo = moment().subtract(2, "days"); 
 

 
function showSinceOrDate(date) { 
 
    var now = moment(); 
 
    if (moment.duration(now.diff(date)).asHours() > 24) { 
 
    return date.format("DD.MM.YYYY HH:mm"); 
 
    } else { 
 
    return date.fromNow(); 
 
    } 
 
} 
 

 

 
console.log(showSinceOrDate(tenSecAgo)); 
 
console.log(showSinceOrDate(twoDayAgo));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment-with-locales.min.js"></script>

Also have a look at moment's documentation

+0

Спасибо за это .. его положил меня на правильный трек –

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

  • Нет связанных вопросов^_^