如何在ng-repeat - angularjs中以不同格式显示日期

时间:2017-04-26 05:01:11

标签: angularjs date

我的约会时间为“2017-04-03 05:00:07”。我需要检查日期是今天的日期。如果是今天的日期,我需要显示为今天或时间。

如果是昨天需要显示为昨天或日期为“MMM dd”

如果是上个月或今年那么,“MMM dd”。

如果是去年那么dd / mm / yyyy

我尝试使用指令显示这样但这对我不起作用。

还有其他方法吗?

app.directive('myDirective', function($filter) {
return {
    restrict: "A",
    scope: {
        myDirective: '='
    },
    link: function(scope, element, attrs) {
        var date1 = new Date(scope.myDirective.updateddate);
        var date2 = new Date();
        var timeDiff = Math.abs(date2.getTime() - date1.getTime());
        var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
        if (diffDays == 1) {
            scope.myDirective.updateddate = 'yesterday'
        } else if (diffDays > 2 && diffDays <= 365) {
            scope.myDirective.updateddate = $filter('date') scope.myDirective.updateddate, 'dd-MMM');
    }
    else if (diffDays > 365) {
        scope.myDirective.updateddate = $filter('date') scope.myDirective.updateddate, 'dd-MM-YYYY');
    } });

2 个答案:

答案 0 :(得分:1)

在显示

时使用Moment.js
{{moment(date).calendar()}} // Today at 11:17 AM

供参考:https://momentjs.com/

答案 1 :(得分:0)

使用custom filter是最正确的方法。

您可以像指令一样定义过滤器:

app.filter('myfilternamehere', function() {
    return function(input) {
        //do some stuff that creates the correct output
        return output;
    }
});

我创建了一个JSFiddle,其中可能包含您的问题的解决方案,同时向您展示如何更详细地创建自定义指令。