复杂时间间隔签入 PHP
Complex time interval check in PHP
我有一个复杂的时间间隔检查正在努力解决。问题是:
我需要动态计算订单的取货时间。
从周一 10:01am 到周三上午 10 点的订单将在周五送达。从周三 10:01 到周五 10:00am 的订单将在下周一交付。
从周五 10:01am 到周一 10:00am 的订单将在
接下来的星期三。
我在 PHP 工作并使用 Carbon (http://carbon.nesbot.com/docs/),下单时间为 Carbon::now()
抱歉我之前的代码。我检查了一下,发现那里有几个缺陷。我已经重写了代码,这是适合您的完整且有效的解决方案。你可以看看条件来弄清楚我做了什么:
<?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";
}
我有一个复杂的时间间隔检查正在努力解决。问题是:
我需要动态计算订单的取货时间。 从周一 10:01am 到周三上午 10 点的订单将在周五送达。从周三 10:01 到周五 10:00am 的订单将在下周一交付。 从周五 10:01am 到周一 10:00am 的订单将在 接下来的星期三。
我在 PHP 工作并使用 Carbon (http://carbon.nesbot.com/docs/),下单时间为 Carbon::now()
抱歉我之前的代码。我检查了一下,发现那里有几个缺陷。我已经重写了代码,这是适合您的完整且有效的解决方案。你可以看看条件来弄清楚我做了什么:
<?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";
}