2017-01-23 75 views
0

我正在使用ag網格,我們正在使用時刻js進行時間操縱。檢查使用時刻的時間差是否超過30分鐘JS/angularjs

這裏是場景:我在unix時間從後端(JSON)獲取最後更新的時間戳(如此1485120726)。我的邏輯是檢查最後更新的時間戳是否少於30分鐘。如果是這樣,細胞應該是紅色的。除非有新版本,否則這個高光會在30分鐘內過期(回到原來的顏色塊)。

我被困在這一點上如何檢查當前時間戳和最後更新的時間戳之間的差異。

這裏是我的代碼:

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().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)); 
} 

做,但我越來越錯誤說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(); 

.toDate將在moment轉換成純JS Date對象的時間戳。

.getTime將返回日期的時間戳。

然後檢查你的UNIX時間戳比什麼moment給你更大或更小

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

highlightFAA =(params):any => {CurrentDate = moment()。tz(「UTC」)。格式('YYYY-MM-DD HH:mm'); var faaLastRevisedDate = moment.unix(params.data.faaLastRevised/1000).format('YYYY-MM-DD HH:mm'); var ms = moment(CurrentDate).diff(moment(faaLastRevisedDate),'minutes'); console.log(「ms」,ms); (ms> 30){'background-color':'#FFEB3B','text-align':'center','font-weight':'bold'}; } else {'color':'black','text-align':'center','font-weight':'bold'}; } } – coder

+0

@ svarog-我正在使用上面的代碼來檢查差異。但它沒有提供動態檢查它的方法。 – coder

相關問題