我正试图限制用户看到的某些信息在一个登陆页面,只有通过比较,如果今天的日期是在周二下午6时后,在当前一周的页面。
我一直在尝试设置这个条件,但日期/时间功能不是我的强项。
使用下面的我能够确定一周中的几天,但它似乎有点bug,如果在一个日历周内一个新的月开始,逻辑重置为下一个/前一个月。
const today = new Date("2022-11-03 16:20:04");
const first = today.getDate() - today.getDay() + 1;
const tuesday = new Date(today.setDate(first + 1));
const wednesday = new Date(today.setDate(first + 2));
const thursday = new Date(today.setDate(first + 3));
const friday = new Date(today.setDate(first + 4));
console.log('tuesday: ' + tuesday);
const diffTime = Math.abs(tuesday - today);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
console.log(diffDays + " days");
我想通过确定从星期一算起的天数,我可以确定这个数字是否已经被超过。不幸的是,这也没有考虑时间,只有日期。
4条答案
按热度按时间jk9hmnmh1#
您只需要检查日期的星期是〉2(星期二)还是等于2,小时是〉= 18:
brjng4g32#
您的程式码问题在于
setDate
会修改您呼叫它的Date
对象,因此所有对today.setDate
的呼叫都会修改today
日期。若要修正现有的程式码,请先复制today
,然后修改复制的对象:Date
对象是不可靠的,如果你需要支持稍微过时的浏览器,在today
之前添加+
,这样你就有了new Date(+today)
。)*但似乎有一种更简单的方法来检查给定日期是否在本周星期二下午6点之后:
示例:
xv8emn3q3#
getDay()在Date上给出一周中的天数,从0(星期日)、1(星期一)、2(星期二)开始。getHours()给出小时数。确保我们越过了18小时,也就是当天是2或天〉2时的下午6点。
ocebsuys4#
如果星期一是一周的第一天,那么使用一个通用函数来返回与提供的日期相同的一周中某一天的特定时间会很有帮助。
然后将返回的日期与“现在”进行比较。