问题描述:
需求为昨天开始往前推两年内的时间可以选择,其余时间置灰不可选。实现方案如下:
// 两年内时间可选
const pre = new Date();
// 获取两年前这个月的1号
const fullDate = (pre.getFullYear() - 2) + "/" + (pre.getMonth() + 1) + "/" + pre.getDate();
const judgeDate = new Date(fullDate);
const _yesterday = new Date();
_yesterday.setTime(_yesterday.getTime() - 24 * 60 * 60 * 1000);
return time.getTime() > _yesterday || time.getTime() < judgeDate;
在谷歌下没有问题,但是在IE下发现两年以前的日期置灰效果失效了。
解决方案:
打印了_yesterday 和judgeDate ,发现他们两一个是日期对象的格式,一个是时间戳,时间戳在IE下是有置灰效果的。所以怀疑是不是两年前的日期没有转换成时间戳的问题。
修改代码:
// 两年内时间可选
const pre = new Date();
// 获取两年前这个月的1号
const fullDate = (pre.getFullYear() - 2) + "/" + (pre.getMonth() + 1) + "/" + pre.getDate();
const judgeDate = new Date(fullDate).getTime();
const _yesterday = new Date();
_yesterday.setTime(_yesterday.getTime() - 24 * 60 * 60 * 1000);
return time.getTime() > _yesterday || time.getTime() < judgeDate;
IE下置灰效果生效。解决问题。