首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用moment JS/angularjs检查时间差是否超过30分钟

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

Stack Overflow用户
提问于 2017-01-23 08:54:40
回答 1查看 2.5K关注 0票数 0

我使用的是ag-grid,而我们使用的是moment js来处理时间。

这是一个场景:我从后端(JSON)获得最后更新的时间戳,以unix时间表示(如1485120726)。我的逻辑是检查最后更新的时间戳是否小于30分钟。如果是这样,单元格应该是红色的。此突出显示将在30分钟后过期(返回到其原始色块),除非有新的修订。

在这一点上,我被困在如何检查当前时间戳和上次更新的时间戳之间的差异。

下面是我的代码:

代码语言:javascript
运行
复制
  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的方法。

代码语言:javascript
运行
复制
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不能用于字符串或数字,我不确定如何继续,我需要一些建议。

**这是我工作的更新后的代码,它提供了分钟内的差异。

代码语言:javascript
运行
复制
 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'};
     }
 }

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

EN

回答 1

Stack Overflow用户

发布于 2017-01-23 17:09:26

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

代码语言:javascript
运行
复制
let halfAnHourAgo = moment().subtract(30, 'minutes').toDate().getTime();

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

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

然后检查您的unix时间戳是否比moment提供的时间戳大或小

代码语言:javascript
运行
复制
if (yourServerDate < halfAnHourAgo) {
    // color cell red
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41797823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档