js求传递的字符串时间,最晚不得晚于下周一的问题

js解决关于时间相关的问题

在日常工作中总会遇上一些时间处理的问题,就比如:请假时,要求补办请假条的时间最晚不得晚于下周一
一般遇上这样的问题,首先就是判断时间的格式问题,如果是字符串时间就需要将这个字符串时间转成时间格式

字符串格式转成时间格式

function parseDate(dateStr) {
    const parts = dateStr.split('-');  
    return new Date(parts[0], parts[1] - 1, parts[2]);  //注意月份是从0开始的,所以需要减一
}
parseDate("2023-02-03")

parseDate是自定义的时间转换格式,转的是yyyy-mm-dd的格式

根据请假时间获取请假时间的下周一

function getNextMonday(date) {  
let day = date.getDay(); 
console.log("进入下周一辅助函数----》", day);  
let diff = (day === 0) ? 1 : (day === 1) ? 8 - 1 : (8 - day);  
date.setDate(date.getDate() + diff);  
console.log(date, "返回值");  
return date;  
}

getNextMonday方法传的参数是请假时间,这样返回的date就是请假时间的下周一时间

判断获取的下周一时间和补办请假条的时间是否符合规定了

function isNextMonday(sqsj, qcsj) { //传的是申请时间和请假时间 
    // 解析字符串为Date对象  
    const startDate = parseDate(qcsj);  
    const applyDate = parseDate(sqsj);
     
    // 获取请假时间所在周的下一个周一  
    const nextMonday = getNextMonday(new Date(startDate));  
  
    console.log("请假时间: " + startDate);
    console.log("申请时间: " + applyDate);
    console.log("下周一: " + nextMonday);
    
    // 比较申请时间是否在请假时间的下一个周一之前(包括下周一)  
    if (applyDate >= startDate && applyDate <= nextMonday) {  
        console.log("申请时间在启程时间到下周一之间(包括下周一)");  
        return true;  
    }else if(applyDate<startDate && startDate<=nextMonday){
        console.log("启程时间大于申请时间,且启程时间在下周一之前(包括下周一)");  
        return true;
    }
    else {  
        console.log("申请时间不在启程时间到下周一之间");  
        return false;  
    }  
}

**ps:**注意,请假条不仅可以在请假时间之后补办,也可以在请假时间之前提前申请,所以需要判断申请时间是在请假时间之前还是在请假时间之后

以上就是解决这个问题的三个步骤,如果你有更好的想法,欢迎在评论区交流沟通呀~

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值