Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态获取特定工作日最后一次出现的日期_Javascript_Date - Fatal编程技术网

Javascript 动态获取特定工作日最后一次出现的日期

Javascript 动态获取特定工作日最后一次出现的日期,javascript,date,Javascript,Date,我试图创建一个函数,返回某个特定工作日的日期,即上次发生的日期 例如,今天是2016年8月16日星期二。如果我在寻找上周五,它应该返回2016-08-12 目前,我使用的代码是为特定的工作日编写的。我怎样才能更改它,使其返回我要求的任何工作日的日期 let t = new Date().getDate() + (6 - new Date().getDay() - 1) - 7; let d = new Date(); d.setDate(t); var WEEK_DAYS=[“周日”、“周一

我试图创建一个函数,返回某个特定工作日的日期,即上次发生的日期

例如,今天是2016年8月16日星期二。如果我在寻找上周五,它应该返回2016-08-12

目前,我使用的代码是为特定的工作日编写的。我怎样才能更改它,使其返回我要求的任何工作日的日期

let t = new Date().getDate() + (6 - new Date().getDay() - 1) - 7;
let d = new Date();
d.setDate(t);
var WEEK_DAYS=[“周日”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”];
var MILLIS_/天=86400000;
函数lastOccurrenceOf(工作日){
var desiredIndex=周日指数(工作日);
var currentDate=新日期;
var daysDifference=(currentDate.getDay()-desiredIndex+6)%7+1;//之前的天数
返回新日期(currentDate.getTime()-MILLIS_PER_DAY*daysDifference);
}
console.log(lastOccurrenceOf('星期二').toString());

console.log(lastOccurrenceOf('Friday').toString())似乎有一种更简单的方法,但我的看法是这样的

console.log(“周一”),getLast(“周一”);
log(“星期二”,getLast(“星期二”);
log(“星期五”,getLast(“星期五”);
函数getLast(dayName){
风险值天数=[“周日”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”];
var dayNum=days.indexOf(dayName);
var todayDate=新日期();
var todayDay=todayDate.getDay();
如果(dayNum>=todayDay)todayDay+=7;
var diff=今天-天数;
diff=diff*24*60*60*1000;
返回新日期(今天日期-差异);

}
我编写了一个适用于所有情况的函数

/**
*@param{Date}Date-初始日期
*@param{(“星期一”“星期二”“星期三”“星期四”“星期五”“星期六”“星期日”)}一周中的一天
*@returns{Date}-上次发生的日期,如果day参数无效,则为同一日期
*/
函数GetLastDayOccurrence(日期,天){
const d=新日期(Date.getTime());
常日=[‘星期日’、‘星期一’、‘星期二’、‘星期三’、‘星期四’、‘星期五’、‘星期六’];
如果(天,包括(天)){
常量修饰符=(d.getDay()+days.length-days.indexOf(day))%7 | | 7;
d、 setDate(d.getDate()-修饰符);
}
返回d;
}
根据您的示例,如果今天是2016年8月16日星期二,则前一个星期五可以如下所示:

const lastFriday=GetLastDayOccurrence(新日期('2016-08-16'),'Fri');

也在这里回答:

有一个小错误,如果您询问今天工作日的最后一个事件,它将返回今天的日期。