PHP中的复杂时间间隔检查

时间:2016-05-25 10:32:21

标签: php date php-carbon

我有一个复杂的时间间隔检查,我正努力解决。这是问题所在:

我需要动态计算订单的取货时间。 周一上午10:01至周三上午10点的订单将于周五发货。周日10:01至周五上午10:00的订单将在下周一发货。 从星期五上午10点01分到星期一上午10点的订单将被送达 星期三之后。

我在PHP工作并使用Carbon(http://carbon.nesbot.com/docs/),订单放置时间为Carbon :: now()

1 个答案:

答案 0 :(得分:0)

对不起我之前的代码。我查了一下,发现了几个漏洞。我已经重写了代码,这里是完整且有效的解决方案。您可以查看条件,找出我所做的事情:

<?php
    date_default_timezone_set('Asia/Karachi'); // set default timezone if needed
    $time = new DateTime();
    $day = $time->format('l');
    $IntervalA = new DateTime('10:01');
    $IntervalB = new DateTime('10:00');

    // for friday delivery
    if(in_array($day, array('Monday', 'Tuesday')) AND $time >= $IntervalA OR in_array($day, array('Wednesday')) AND $time <= $IntervalB) {
        echo "The product will be delivered on Friday";
    }

    // for monday delivery
    if(in_array($day, array('Wednesday', 'Thursday')) AND $time >= $IntervalA OR in_array($day, array('Friday')) AND $time <= $IntervalB) {
        echo "The product will be delivered on Monday";
    }

    // for wednesday delivery
    if(in_array($day, array('Friday', 'Saturday', 'Sunday')) AND $time >= $IntervalA OR in_array($day, array('Monday')) AND $time <= $IntervalB) {
        echo "The product will be delivered on Wednesday";
    }