2017-04-04 17 views
0

ng-repeatの中に特定の形式で日付と時刻を表示する必要があります。日付と時刻を特定の形式に変換する方法

現在の時刻が10amの場合、バックエンドから取得する日付値は「2017-04-03 05:00:07」から「5時間」になります。

昨日の場合は、昨日表示する必要があります。 2日以上前の場合は、「Apr 03」のような月を表示する必要があります。前年の場合は、「01/02/16」(dd/MM/yy)と表示する必要があることを意味します。

<table> 
    <tr ng-repeat="item in messages"> 
    <td><input type="checkbox" class="icheckbox_square-blue" ng-model="messagesinboxCheck"> 
    </td> 
    <td class="mailbox-name"><a>{{item.from}}</a></td> 
    <td class="mailbox-subject">{{item.messagebody.trunc(25)}} 
    </td> 
    <!--<td class="mailbox-attachment"></td>--> 
    <td class="mailbox-type" ng-if="{{item.messagetype}} == 1">SMS</td> 
    <td class="mailbox-type" ng-if="{{item.messagetype}} == 0">Email</td> 
    <td class="mailbox-type" ng-if="{{item.messagetype}} == 2">SMS & Email</td> 
    <td class="mailbox-date">{{item.updateddate}}</td> 
    </tr> 
</table> 
<script> 
var messages = { 
    "json": { 
    "response": { 
     "statuscode": "0", 
     "statusmessage": "Success", 
     "data": { 
     "inboxmessages": [{ 
      "modulereferenceid": 23671, 
      "transactionid": 18969, 
      "messagebody": "Testing message", 
      "messagetype": 1, 
      "createddate": "2017-04-03 05:00:07", 
      "updateddate": "2017-04-03 05:00:07", 
      "forward": false, 
      "from": "dinesh", 
      "deleted": false, 
      "enablecomments": false, 
      "url": "/GroupzMobileApp/inbox/avNTaab2hMaaaaeNar6yaaabwMaaanQa" 
     }] 
     }, 
     "lastsynchtime": "2017-04-04 06:14:09" 
    } 
    } 
} 
</script> 

この日付の機能が新しくなったため、誰でも助けてくれますか?

+0

フィルターを作成し、要件をフィルタで書き換えます。 –

答えて

0
<td class="mailbox-date">{{item.updateddate}}</td> 

使用Angular Filter

例:{{todayDate | date: "dd.MM.yy"}} todayDateが2017年4月4日の場合、 "04.04.17"と表示されます

0

ディレクティブを使用してこれを実行し、日を比較して解決策を定義できます。

だからあなたのHTML部分に

<tr ng-repeat="item in messages" my-directive="item"> 

このディレクティブを追加アンギュラコード:

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

"scope.myDirective.updateddate = $ filter( 'date')scope.myDirective.updateddate、 'dd-MMM'); ** **の行に予期しない識別子が表示されています – sudarsan

関連する問題