在PHP中添加小时来验证假期

时间:2017-07-25 15:12:13

标签: php hour

我有一个PHP代码,通过这种方式在我的系统验证时间表和星期日生成订单的交货日期和时间:

<?php
$hours = 6;

$date = date('Y-m-d h:i A');
$delivery = date("d-m-Y h:i A", strtotime("+$hours hours", strtotime($fecha)));
echo $delivery;

    if (date('H') >= 18 || date('H')<9 || date('w')==0){
        $c=strtotime("tomorrow 09:00");
        $date = date("Y-m-d h:i A", $c);

        $delivery = date("d-m-Y h:i A", strtotime("+$hours hours", strtotime($fecha)));

        echo $delivery;
    }


?>

如果订单是在下午6点之后或上午9点之前或如果当天是星期日,那么该订单将在晚上9点和递增小时进行验证。但是我想验证当天和第二天是星期天还是假期,如7月4日(04-07)或圣诞节(25-12),以便在第二天生成交货日期时间(05-07或26-12) )。

我该如何修改?

我想要一些帮助。

2 个答案:

答案 0 :(得分:0)

首先我会使用DateTime对象。下一步,您可以将验证部分与修改部分分开。在循环中运行validaton。今天,明天等等。可能你需要一个临时日期对象,你可以修改它而不会丢失原始日期。

答案 1 :(得分:0)

只需在while循环中运行代码,这样您就可以根据需要多次调用tomorrow 09:00

$hours = 6;

$orderPickup = time(); // Normally order should be picked up right now
$delivery = strtotime("+$hours hours", $orderPickup);

while(
    date('H', $orderPickup) > 18 
    || date('H', $orderPickup) < 9 
    || date('w', $orderPickup) == 0 // No order pickup on sunday
    || date('m-d', $orderPickup) == '12-25' // No order pickup on Christmas-day
    || date('w', $delivery) == 0) // No delivery on sunday
    || date('m-d', $delivery) == '12-25' // No delivery on Christmas-day
) {
    // $orderPickup will be 9 am next day
    $orderPickup = strtotime('tomorrow 9:00:00', $orderPickup);
    $delivery = strtotime("+$hours hours", $orderPickup);

    // If tomorrow 9:00 is stil not suitable, the while-loop will run again
}
echo "Delivery on " . date("d-m-Y h:i A", $delivery);