使用时刻JS / angularjs检查时间差是否超过30分钟

时间:2017-01-23 00:54:40

标签: javascript momentjs ag-grid

我正在使用ag-grid,我们正在使用时刻js进行时间操作。

以下是该场景:我在unix时间从后端(JSON)获取最后更新的时间戳(如此1485120726)。我的逻辑是检查上次更新的时间戳是否少于30分钟。如果是这样,细胞应为红色。除非有新版本,否则此突出显示将在30分钟后过期(返回其原始颜色块)。

此时我仍然坚持如何检查当前时间戳和上次更新时间戳之间的差异。

这是我的代码:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我不确定这个逻辑是否足够

我尝试了另一种使用 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

但是这里每次重新加载页面时都会检查时差,但我需要的是一种方法来动态重新检查时间和上次修改时间之间的时差,并在超过30分钟时限时立即改变颜色

1 个答案:

答案 0 :(得分:2)

使用.subtract获取30分钟前的时间戳

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

.toDate会将moment转换为普通的js Date对象。

.getTime将返回日期的时间戳。

然后检查你的unix时间戳是大于还是小于moment给你的

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