2016-11-15 69 views
0

我正在尝试整理一个聊天应用程序,并且我从未处理过momentjs。基本上我希望它表明一个评论是在几秒前,几分钟前,几小时前发布的..但是,然后我需要它只显示日期而不是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,这里是你会怎么做你”重新开始,随着时间的流逝。您可以包含一个本地化版本的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

感谢这..它使我在正确的轨道上 –