Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 显示下一个可用日期,24小时空白,带角度和动量J_Javascript_Angularjs_Date_Momentjs - Fatal编程技术网

Javascript 显示下一个可用日期,24小时空白,带角度和动量J

Javascript 显示下一个可用日期,24小时空白,带角度和动量J,javascript,angularjs,date,momentjs,Javascript,Angularjs,Date,Momentjs,我试图使用AngularJS和MomentJS显示一系列可能的交付日期。 问题是它需要满足某些条件:交付日期仅为周一、周三和周五 此外,当页面加载时,它会识别当前日期,并且只会显示下一个可用日期(至少24小时后)(例如,如果我在星期日下午1点加载页面,第一个可用日期将是星期三,因为星期一不符合24小时间隔) 到目前为止,我只能想,如果在一周中的每一天都使用条件句来处理这个问题,但我很确定必须有一种更整洁的方式来处理它 以下是我到目前为止所做的: $scope.today = moment();

我试图使用AngularJS和MomentJS显示一系列可能的交付日期。 问题是它需要满足某些条件:交付日期仅为周一、周三和周五

此外,当页面加载时,它会识别当前日期,并且只会显示下一个可用日期(至少24小时后)
(例如,如果我在星期日下午1点加载页面,第一个可用日期将是星期三,因为星期一不符合24小时间隔)

到目前为止,我只能想,如果在一周中的每一天都使用条件句来处理这个问题,但我很确定必须有一种更整洁的方式来处理它

以下是我到目前为止所做的:

$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()));
您可以在此处查看一个工作示例: