我如何使用 momentjs 将一天添加到我的变量中
How can i add one day to my variable with momentjs
您好,我正在尝试解决这个问题,但我做不到,
我想计算一个月中的几天,没有星期日和星期六
这是我的代码
startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
calculate(startOfMonth, endOfMonth);
calculate(start,end){
var numWorkDays = 0;
var currentDate = start;
console.log(currentDate, end)
while (currentDate <= end) {
if (currentDate !== 1 && currentDate !== 7) {
numWorkDays++;
}
currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
}
console.log(numWorkDays)
},
但是我的函数只计算了 14 天,而且天数增加了 2
谢谢
您添加天数的方式是正确的。
问题来自 console.log
行,其中又添加了一天。请删除或评论此行:
//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
现在,您的代码中还有一些其他错误,这就是您没有得到预期结果的原因:
- 周日和周六的号码是
0
和6
,而不是1
和7
- 在您的代码中,
currentDate
是一个字符串。例如,您正在比较 "2021-02-01"
与 1
和 7
。要获取它的编号,您必须从该字符串创建一个日期对象,然后调用 day()
所以最终的代码应该是这样的:
startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
function calculate(start,end){
var numWorkDays = 0;
var currentDate = start;
while (currentDate <= end) {
var currentDateAsNumber = moment(currentDate).day();
var dayName = moment(currentDate).format('dddd');
if (currentDateAsNumber !== 0 && currentDateAsNumber !== 6) {
numWorkDays++;
}
currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
}
console.log(numWorkDays)
}
calculate(startOfMonth, endOfMonth);
如果需要,我也添加了一个变量dayName
。
您好,我正在尝试解决这个问题,但我做不到, 我想计算一个月中的几天,没有星期日和星期六
这是我的代码
startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
calculate(startOfMonth, endOfMonth);
calculate(start,end){
var numWorkDays = 0;
var currentDate = start;
console.log(currentDate, end)
while (currentDate <= end) {
if (currentDate !== 1 && currentDate !== 7) {
numWorkDays++;
}
currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
}
console.log(numWorkDays)
},
但是我的函数只计算了 14 天,而且天数增加了 2 谢谢
您添加天数的方式是正确的。
问题来自 console.log
行,其中又添加了一天。请删除或评论此行:
//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
现在,您的代码中还有一些其他错误,这就是您没有得到预期结果的原因:
- 周日和周六的号码是
0
和6
,而不是1
和7
- 在您的代码中,
currentDate
是一个字符串。例如,您正在比较"2021-02-01"
与1
和7
。要获取它的编号,您必须从该字符串创建一个日期对象,然后调用day()
所以最终的代码应该是这样的:
startOfMonth = moment().clone().startOf('month').format('YYYY-MM-DD');
endOfMonth = moment().clone().endOf('month').format('YYYY-MM-DD');
function calculate(start,end){
var numWorkDays = 0;
var currentDate = start;
while (currentDate <= end) {
var currentDateAsNumber = moment(currentDate).day();
var dayName = moment(currentDate).format('dddd');
if (currentDateAsNumber !== 0 && currentDateAsNumber !== 6) {
numWorkDays++;
}
currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD");
//console.log(currentDate = moment(currentDate).add(1, 'd').format("YYYY-MM-DD"))
}
console.log(numWorkDays)
}
calculate(startOfMonth, endOfMonth);
如果需要,我也添加了一个变量dayName
。