Moment JS Angular 2 - 24小时后才显示正常日期

时间:2016-11-15 22:14:43

标签: javascript angularjs angular momentjs

我正在尝试整理一个聊天应用程序,我以前从未处理过momentjs。基本上我希望它能显示评论是在几秒钟前,几分钟前,几小时前发布的......但是我需要它才能显示日期而不是1天前,2天前等等...

我正在使用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;

  }
}

1 个答案:

答案 0 :(得分:0)

正如你用momentjs标记了这一点,这里有你如何用momentjs做你所做的事。您可以包含本地化版本的momentjs来显示德语消息。

&#13;
&#13;
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));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment-with-locales.min.js"></script>
&#13;
&#13;
&#13;

Also have a look at moment's documentation