Javascript 显示下一个可用日期,24小时空白,带角度和动量J
我试图使用AngularJS和MomentJS显示一系列可能的交付日期。 问题是它需要满足某些条件:交付日期仅为周一、周三和周五 此外,当页面加载时,它会识别当前日期,并且只会显示下一个可用日期(至少24小时后)(例如,如果我在星期日下午1点加载页面,第一个可用日期将是星期三,因为星期一不符合24小时间隔) 到目前为止,我只能想,如果在一周中的每一天都使用条件句来处理这个问题,但我很确定必须有一种更整洁的方式来处理它 以下是我到目前为止所做的:Javascript 显示下一个可用日期,24小时空白,带角度和动量J,javascript,angularjs,date,momentjs,Javascript,Angularjs,Date,Momentjs,我试图使用AngularJS和MomentJS显示一系列可能的交付日期。 问题是它需要满足某些条件:交付日期仅为周一、周三和周五 此外,当页面加载时,它会识别当前日期,并且只会显示下一个可用日期(至少24小时后)(例如,如果我在星期日下午1点加载页面,第一个可用日期将是星期三,因为星期一不符合24小时间隔) 到目前为止,我只能想,如果在一周中的每一天都使用条件句来处理这个问题,但我很确定必须有一种更整洁的方式来处理它 以下是我到目前为止所做的: $scope.today = moment();
$scope.today = moment();
$scope.$watch('today', function () {
if ($scope.today = moment().day('Sunday')){
$scope.nextdateone = moment().add(3, 'd');
$scope.nextdatetwo = moment().add(5, 'd');
$scope.nextdatethree = moment().add(8, 'd');
$scope.nextdatefour = moment().add(10, 'd');
}
else if ($scope.today = moment().day('Monday')){
$scope.nextdateone = moment().add(2, 'd');
$scope.nextdatetwo = moment().add(4, 'd');
$scope.nextdatethree = moment().add(7, 'd');
$scope.nextdatefour = moment().add(9, 'd');
}
else if ...
});
这是我提出的逻辑,但到目前为止还没有真正起作用
有什么提示吗?交付日期“周一、周三和周五”,根据您的选择,可以表示为1、3和5
因此,我将创建一个包含这些日期的数组,然后给定当前日期,我将迭代该交付日期数组以找到最合适的日期。。。大概是这样的:
const deliveryDates = [1, 3, 5];
const getDeliveryDate = (today) => {
let deliveryIndex = -1;
deliveryDates.some((date, index) => {
// If today is a delivery date, then schedule for the next delivery
if (today === date) {
deliveryIndex = index + 1;
return true;
}
// If today is before the current delivery date, store it
if (today < date) {
deliveryIndex = index;
return true;
}
});
// If delivery date is out of bounds, return the first delivery date
return deliveryIndex === deliveryDates.length || deliveryIndex === -1 ? 0 : deliveryIndex;
};
const getNextDelivery = (today) => {
return deliveryDates[getDeliveryDate(today)];
};
console.log(moment().day(getNextDelivery(moment().day())));
const deliveryDates=[1,3,5];
const getDeliveryDate=(今天)=>{
让deliveryIndex=-1;
交货日期。某些((日期,索引)=>{
//如果今天是交货日期,则安排下一次交货
如果(今天===日期){
交货指数=指数+1;
返回true;
}
//如果今天在当前交货日期之前,请将其存储
如果(今天<日期){
交货指数=指数;
返回true;
}
});
//如果交货日期超出范围,则返回第一个交货日期
return deliveryIndex===deliveryDates.length | | deliveryIndex===-1?0:deliveryIndex;
};
const getNextDelivery=(今天)=>{
返回交货日期[getDeliveryDate(今天)];
};
log(矩().day(getNextDelivery(矩().day()));
您可以在此处查看一个工作示例: