Acu*_*nus 2 javascript momentjs
使用moment.js获取前一个工作日的最佳方式是什么?工作日是周一至周五.
一些期望:
function getPreviousWorkday(){
let workday = moment();
let day = workday.day();
let diff = 1; // returns yesterday
if (day == 0 || day == 1){ // is Sunday or Monday
diff = day + 2; // returns Friday
}
return workday.subtract(diff, 'days');
}
Run Code Online (Sandbox Code Playgroud)
更新的方法(没有循环)
您实际上可以利用day()允许您在moment.js中设置当前星期几的函数来查找基于特定日期的上一个星期五:
function getPreviousWorkday(){
// Based on the current day, handle accordingly
switch(moment().day())
{
// If it is Monday (1),Saturday(6), or Sunday (0), Get the previous Friday (5)
// and ensure we are on the previous week
case 0:
case 1:
case 6:
return moment().subtract(6,'days').day(5);
// If it any other weekend, just return the previous day
default:
return moment().day(today - 1);
}
}
Run Code Online (Sandbox Code Playgroud)
这可以在这里看到并在下面演示:
循环方式
你可以简单地从你当前时刻的实例中减去当天通过subtract()函数的天数,直到你到达非周末日:
function getPreviousWorkday(){
// Get today
var today = new moment().subtract(-1,'days');;
// If today isn't a weekend, continue iterating back until you hit a non-weekend
while([0,6].indexOf(today.day()) !== -1){
today = today.subtract(1, 'days');
}
// Return the non-weekend day
return today;
}
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看此操作的示例,并在下面进行演示:
| 归档时间: |
|
| 查看次数: |
4685 次 |
| 最近记录: |