如题所描述:
js如何高效判断某日期是否属于本周日期,日期是否属于本月日期
// 判断是不是本周
function inWeek (timestamp) {
let todaysDate = new Date();
// 获取今天是周几
let day = todaysDate.getDay();
// 计算一周的最后一天
let lastWeek = new Date(todaysDate.getTime() + (7 - (day || 7)) * 24 * 60 * 60 * 1000);
lastWeek.setHours(23, 59, 59, 999);
// 计算一周的第一天
let firstWeek = new Date(todaysDate.getTime() - ((day || 7) - 1) * 24 * 60 * 60 * 1000);
firstWeek.setHours(0,0,0,0);
return timestamp <= lastWeek.getTime() && timestamp >= firstWeek.getTime();
}
10 回答10.7k 阅读
7 回答10.9k 阅读
6 回答2.6k 阅读
2 回答11.4k 阅读✓ 已解决
5 回答4.4k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
比较有意思的问题。
本月日期判断还好处理
如果直接是date对象,可以直接分别获取getMonth() 和 getFullYear() 比较来判断,都相同的就是在一个月
比如
对同一周的判断就比较麻烦啦,首先,需要界定什么算同一周,及一周的起点是那天,如果和js默认一样,认为一周的起点是周日,则需要根据今天计算出本周覆盖到的日子(注意同一周是可以跨月和跨年的),具体判断实现如下
逻辑是先计算出当前日期是当周的
X(0<=X<=6)
日,则同周的日期范围是其[0-X,6-X]
,这样以当前日期为基准,分别计算这个范围内的各个日期对应的toLocaleDateString()
,如果存在与inDate
对应的toLocaleDateString()
相等,则表明inDate
和现在处于同一周。