私は2つの出荷ゾーンA & Bを持っています。ゾーンAの注文は毎週月曜日、水曜日の&金曜日に配信され、ゾーンBは火曜日、木曜日、土曜日に配信されます。各注文について、配送日はゾーンに応じてNEXT AVAILABLE日に予定されています。月曜日に商品を注文すると、商品はBゾーンの火曜日とAゾーンの水曜日に配送されます。PHPこの例で次の日付を取得するにはどうすればよいですか?
BUT:ご注文の場合はが18: 00(午後6時)、顧客のエリアが明日の配達ゾーンにある場合は、納品日を次の利用可能日()に進めなければなりません。
ここにコードがあります。それは、時間をチェックし、定期的な納期を取得し、明日の日付と比較する必要がある最後の部分を除いて正常に動作します。
<?
$date = array(date("d"), date("m"), date("Y"));
$zones = array("A" => array(1 => "Monday",
3 => "Wednesday",
5 => "Friday")
,"B" => array(2 => "Tuesday",
4 => "Thursday",
6 => "Saturday"));
$found = false;
$days_plus = 1; // always begin from next day
// Retrieve last day from the zone
end($zones[$zone]); //Friday or Saturday
$last_day = key($zones[$zone]); //5 or 6
do {
$mk = mktime(0, 0, 0, $date[1], ($date[0] + $days_plus), $date[2]);
$week = date("w", $mk); // current day of week
if ($week <= $last_day) // if weekday not passed last day of zone
{
if (!isset($zones[$zone][$week]))
{
$days_plus++;
}
else
{
$found = true;
$day = $last_day;
}
}
else
{
$days_plus++;
}
} while (!$found);
$deliverydate = date("d/m/Y", $mk); // regular delivery date
$tomorrow = date('d/m/Y', strtotime('tomorrow'));
//Now, check if order is placed after 6pm
if ((date("d/m/Y", $mk)==$tomorrow) && (date('G') > 18)) {
// HERE'S my problem, how do I advance the
//delivery date to next day in the same zone?
}
echo $deliverydate;
?>
注:私は、私は別の$のdays_plus値で再びそれを呼び出すことができるように(X日増)関数findNextDay($のdays_plus、$日、$のLAST_DAY、$ゾーン)にループを変換してみました私はそれを働かせることができませんでした。興味のある人のためhere is the modified version
ありがとう、完璧です! – bikey77