起因
最近项目涉及到了一个有效时间的判断的需求。由于数据库存储的不是时间戳,而是一个如下格式的时间:
2020-06-16 10:12:44
所以,当这个时间直接传递到了前端的时候,进行一个时间的对比会变得比较麻烦。(注:由于dto里面的time变量是Date类型,所以我也无法后台转化为时间戳,再返回给前端。而添加一个新的变量保存时间戳,我又觉得没有必要,这样势必涉及到了类的修改,开闭原则,写好的部分尽量不要再去修改了。)所以,我去查了一下怎么用js实现当前时间于上面那种格式的字符串(后端传递过来就变成了字符串了)进行对比。
代码
可以用如下的js代码:
var onlineTime = $(某个id).attr("onlineTime");//这个意思是:由于使用的是thymeleaf,所以我将后端的数据绑定在了某个id对应的元素中,并且是以元素的attr的方式,绑定了属性。所以,js代码中要获得这个属性,我要通过这种方式。如果你的是ajax之类的直接返回的数据,那么,你直接比较就好了,不需要像我这样子获得时间(此时是字符串类型)。
var offlineTime = $(某个id).attr("offlineTime");//同上,这个是有效时间的结束时间。
var onlineTimeStamp = Date.parse(new Date(onlineTime)); //将时间由日期格式转化为时间戳与(1970年1月1日0点对比的时间差)
var offlineTimeStamp = Date.parse(new Date(offlineTime));//同上
var nowTimeStamp = new Date().getTime();//获得当前时间的时间戳、
if(offlineTimeStamp != 0 && offlineTimeStamp<nowTimeStamp){ //直接比较即可。
alert("已过期,请修改对应有效时间");
return;
}
上面涉及的变量的数值如下所示: