Javascript 使用moment.js和moment business days计算公共假日和周末的日期
此应用程序的目的始终是显示每月的第16个工作日(表示考虑了工作日和公共假日) 为此,我使用了Javascript 使用moment.js和moment business days计算公共假日和周末的日期,javascript,date,momentjs,moment-business-days,Javascript,Date,Momentjs,Moment Business Days,此应用程序的目的始终是显示每月的第16个工作日(表示考虑了工作日和公共假日) 为此,我使用了moment business days,这是一个moment.js插件。它计算日期并考虑工作日和(预先配置的)公共假日。我使用它如下,对于一些日期,它给了我正确的结果,但对于其中一些日期,它不是。我看不出代码中的错误: myHolidays=[ {holidayDate:“2020-06-01”,描述:“holiday 1”}, {holidayDate:“2020-06-02”,描述:“holida
moment business days
,这是一个moment.js
插件。它计算日期并考虑工作日和(预先配置的)公共假日。我使用它如下,对于一些日期,它给了我正确的结果,但对于其中一些日期,它不是。我看不出代码中的错误:
myHolidays=[
{holidayDate:“2020-06-01”,描述:“holiday 1”},
{holidayDate:“2020-06-02”,描述:“holiday 2”},
{holidayDate:“2020-06-03”,描述:“holiday 3”},
{度假日期:“2020-06-06”,描述:“周末周六”},
{holidayDate:“2020-06-07”,描述:“周末-周日”},
{holidayDate:“2020-06-11”,描述:“holiday 6”},
{度假日期:“2020-06-13”,描述:“周末周六”},
{holidayDate:“2020-06-14”,描述:“周末-周日”},
{度假日期:“2020-06-20”,描述:“周末周六”},
{holidayDate:“2020-06-21”,描述:“周末-周日”},
{度假日期:“2020-06-27”,描述:“周末周六”},
{holidayDate:“2020-06-28”,描述:“周末-周日”},
];
时刻更新刻度('de'{
假日:myHolidays.map(i=>i.holidayDate),
holidayFormat:'YYYY-MM-DD'
});
var startDate=时刻(“2020-01-01”)。startOf(“月”)
var endDate=时刻(“2020-12-01”)
var每个月16=[];
函数generate16InEachMonth(){
让monthsList=[]
//按月循环
而(结束日期>开始日期){
monthList.push(新日期(时刻(this.startDate).businessAdd(15,'days'))
startDate=startDate.add(1,“月”).startOf(“月”)
}
返回月份列表
}
console.log(generate16InEachMonth())
.as控制台包装{top:0;最大高度:100%!重要;}
该代码无法在所有月份都工作的原因是,默认情况下,每月的第一天被计为工作日 区分第一天是否为工作日的条件应足够(如果第一天本身不是工作日,则增加16个工作日)
你是如何在6月份获得26个预期工作日的?嘿,baermathias,你仍然有这个问题吗?我运行了你的代码,只有一个日期与目标日期不同。这是我的控制台:
“2020-01-22”、“2020-02-21”、“2020-03-20”、“2020-04-22”、“2020-05-22”、“2020-06-25”、“2020-07-22”…
function generate16InEachMonth() {
let monthsList = []
// loop by months
while (endDate > startDate) {
var daysToAdd = (startDate.isBusinessDay()) ? 15 : 16
monthsList.push(new Date(moment(this.startDate).businessAdd(daysToAdd, 'days')))
startDate = startDate.add(1, "month").startOf('month')
}
return monthsList
}