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

图片描述

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

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

阅读 16k
10 个回答
Date.now()-new Date(create_time)>3*60*60*1000

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
}
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

时间转换为时间戳去计算

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

推荐问题