2017-01-23 7 views
0

私はag-gridを使用していますが、時間の操作にはモーメントjを使用しています。時間差が30分を超えていないかチェックJS/angularjs

ここにシナリオがあります:私はバックエンド(JSON)からunix時(この1485120726のような)の最終更新タイムスタンプを取得しています。私のロジックは、最後に更新されたタイムスタンプが30分未満かどうかを確認することです。その場合、セルは赤色である必要があります。このハイライトは、新しいリビジョンがない限り、30分後に元のカラーブロックに戻ります。

現在のタイムスタンプと最後に更新されたタイムスタンプの違いを確認する方法は、この時点で固まっています。このロジックは、私がdiff

highlightFAA = (params):any => { 

    var CurrentDate = moment().format('YYYY-MM-DD HH:mm'); 
    var lastRevised = moment.unix(params.data.lastRevised/1000).format('YYYY-MM-DD HH:mm'); 

    console.log("currdate", CurrentDate); 
    console.log("lastRevised", lastRevised); 
    console.log("param node", params.node.data.lastRevised); 

    var ms = moment(lastRevised).diff(moment(currdate)); 
} 

使用してそれを行うための一つの他の方法を試してみました

十分であれば、私はわからない

highlightFAA =(params):any=>{ 
    var CurrentDate = moment().unix(); //val 1485120726-currUnixtime 
    var lastRevised= (params.node.data.lastRevised/1000); //Val 1484859960--backend is giving value in millisec so converting to sec 

    console.log("currdate", CurrentDate); 
    console.log("lastRevised", lastRevised); 
    console.log("param node", params.node.data.lastRevised); 

    //30 min is 1800 sec 
    if(Math.abs(lastRevised- CurrentDate)>1800){ 
    return {'background-color': 'black', 'text-align': 'center', 'font-weight': 'bold'}; 
    } else { 
    return {'background-color': '#FFEB3B', 'text-align': 'center', 'font-weight': 'bold'}; 
    } 

} 

しかし、私は取得しています:ここで

は私のコードです diffは文字列または数字に使用できません。続行方法がわかりません。いくつかの提案が必要です。

**ここには分単位で差をつけている更新されたコードがあります。

highlightFAA = (params):any=> { 

    var CurrentDate = moment().tz("UTC").format('YYYY-MM-DD HH:mm'); 
    var lastRevised = moment.unix(params.data.lastRevised/1000).tz("UTC").format('YYYY-MM-DD HH:mm'); 
    var ms = moment(CurrentDate).diff(moment(lastRevised), 'minutes'); 

    if(ms>30) { 
     return {'background-color': '#FFEB3B', 'text-align': 'center', 'font-weight': 'bold'}; 
    } else { 
     return {'color': 'black', 'text-align': 'center', 'font-weight': 'bold'}; 
    } 
} 

しかし、ここでそれは時間差私はページをリロードするたびにチェックしますが、私は必要なのとすぐに超えてcurrtimeと動的前回改定時と変更色の間の時間差を再確認するための方法になっています時間制限は30分です。

+0

を与えた 'しかし、私は必要なの動的currtimeと最終更新時刻との時間差を再度チェックして色を変更する方法にあるものよりも小さいかどうかを確認すぐに30分の制限時間を超えて ' あなたは' $ interval'を使用することができます – svarog

+0

私は$タイムアウトまたは間隔を使用しているときにエラーが発生している名前のタイムアウトを見つけることができません。私は、サービスのvar __inject = [ '$ rootScope'、 は、 を '$コンパイルを' '$のhttp'、 '$ uibModal'、 '$タイムアウト' ]注入していていても、コンストラクタ( プライベート$ rootScope、 プライベート$コンパイル、 民間の$ HTTP、 プライベート$ uibModal、 プライベートタイムアウト; )あなたはこの質問の範囲を超えている – coder

+0

。通常、あなたがすべきことは新しい質問を作成することです。しかし私はあなたの問題を簡単に見ることができます。プライベートタイムアウトをプライベート$タイムアウトに変更してください。 – svarog

答えて

2

使用.subtract 30分前

let halfAnHourAgo = moment().subtract(30, 'minutes').toDate().getTime(); 

.toDatemomentは無地のjs Dateオブジェクトに変換しますたタイムスタンプを取得します。

.getTimeは、日付のタイムスタンプを返します。その後

あなたのUNIXタイムスタンプが大きくなったりmomentはあなたに

if (yourServerDate < halfAnHourAgo) { 
    // color cell red 
} 
+0

highlightFAA =(params):any => { var CurrentDate = moment().z( "UTC")。フォーマット( 'YYYY-MM-DD HH:mm'); var faaLastRevisedDate = moment.unix(params.data.faaLastRevised/1000).format( 'YYYY-MM-DD HH:mm'); var ms =瞬間(CurrentDate).diff(瞬間(faaLastRevisedDate)、 '分'); console.log( "ms"、ms); if(ms> 30){ return {'background-color': '#FFEB3B'、 'text-align': 'center'、 'font-weight': 'bold'}}; } else {return {'color': 'black'、 'text-align': 'center'、 'font-weight': 'bold'}}; } } – coder

+0

@ svarog-私は上記のコードを使用して差分を確認していました。しかし、動的にチェックする方法はありません。 – coder

関連する問題