求一个js 判断时间是否超过 当前3小时的

_Suqin
  • 714

图片描述

上面是请求到的时候, 如果判断 这个时间 与 当前时间相比, 是否超过了3个小时呢

=========================
这个问题就算很弱吧,
既然引起了大家这么多的讨论,
那么就有问题的价值,
为什么要踩呢...

回复
阅读 9.6k
10 个回答
Date.now()-new Date(create_time)>3*60*60*1000
Dylan
  • 301

1.不能使用前端的本地时间进行判断!不能使用前端的本地时间进行判断!不能使用前端的本地时间进行判断!

2.需要后台再给一个接口生成时的时间戳(系统当前时间),然后都转化为时间戳,具体提示如下:

let ctime = ‘create_time转化后的时间戳’
let 3hours = `60 * 60 * 3 * 1000` //算出的三个小时的毫秒数
let time =‘系统当前时间’ + 3hours //算出过期时间
if(ctime>time) console.log('超时了!!!!!!');

其实这个问题真正的精髓不是不能用本地时间去判断吗。。。可以看到前面的一些回答,其实包括我当时都是觉得Date.now()就好了,但是这个是不对的,所以可见这个问题还是有价值的,虽然不是这个问题提出来的价值

将本地时间戳减去3小时的 转换成格林威治时间 然后 对比就行了

用时间戳啊

let serverDate = new Date(rawTime.replace(new RegExp(/-/gm), '/'))
let nowDate = new Date()
let myTime = nowDate.getTime() - serverDate.getTime()
if (myTime > 10800000) {
    // do something
}
chess99
  • 694
function isThreeHourAgo(time) {
  const now = Date.now()
  const d = new Date(time)
  const secDiff = (now - d) / 1000
  return secDiff > 3 * 60 * 60
}

需要更详细的功能,可以看看moment库……
各种和时间相关的处理……看看文档。

let date = new Date(); //now
date.setTime(date.getTime() + 3 * 3600 * 1000); //3hour later

复杂时间操作最好用monent.js

时间转换为时间戳去计算

靠前端校验时间,看恐怕不对哦。比如修改下手机时间,就会不对了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏