2017-04-26 56 views
0

我有一個日期爲「2017-04-03 05:00:07」。我需要檢查日期是今天的日期。如果是今天的日期,我需要顯示爲今天或時間。如何在ng-repeat中以不同格式顯示日期 - angularjs

如果是昨天的需要顯示爲昨天或日期「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'); 
    } }); 
+0

使用自定義過濾器 – Jenny

回答

1

使用Moment.js同時顯示像

{{moment(date).calendar()}} // Today at 11:17 AM 

參考:https://momentjs.com/

+0

必須同意Shanky,時刻是你最好的選擇。 – rrd

0

使用custom filter是最正確的方法來此。

您定義的過濾器就像一個指令:

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

我創建了一個JSFiddle可能包含您的問題,並在同一時間的解決方案展示瞭如何在多一點創建一個自定義指令詳情。

+0

我需要一個指令,它會自動檢查日期並顯示相關的日期格式 – sudarsan