Я не знаком с Python 3.1, но будет ли это работать?
[chr(x) for x in [66, 53, 0, 94]]
Быстрая попытка была бы, как я упоминал в комментарии, удалить повторяющийся код, это как строка, используемая для отображения, так и возможность организации переключения так, чтобы любые дни с общими значениями обрабатывались одним и тем же кодом. ...
$today = date("D");
switch($today){
case "Mon":
case "Tue":
case "Wed":
$days = (mktime(16, 0, 0) <= time())? 2 : 1;
break;
case "Thu":
$days = (mktime(16, 0, 0) <= time())? 4 : 1;
break;
case "Fri":
$days = (mktime(16, 0, 0) <= time())? 5 : 4;
break;
case "Sat":
$days = 4;
break;
case "Sun":
$days = 3;;
break;
default:
break;
}
if ( isset($days) ) {
echo "<p>For Delivery on <strong> " . date('D jS', strtotime($Date. " + {$days} days")). "</strong><p>";
}
else {
echo "No information available for that day.";
}
Обратите внимание, что вы можете сложить case
совпадений, которые делают одно и то же:
switch ($today) {
case 'Mon':
case 'Tue':
case 'Wed':
// code here
break;
}
Но вам лучше просто создать небольшой массив, содержащий значения, которые вам нужны для дней, а затем посмотреть до текущего значения, используя имя дня в качестве индекса массива:
$leadtimes = [
'Mon' => [1, 2], // first value is for before 16:00, second is for after
'Tue' => [1, 2],
'Wed' => [1, 2],
'Thu' => [1, 4],
'Fri' => [4, 5],
'Sat' => [4, 4],
'Sun' => [3, 3],
];
Затем код для расчета времени выполнения заказа - это всего одна строка:
$leadtime = $leadtimes[date('D')][date('H') < 16 ? 0 : 1];
Затем подключите его к вашему выводим как в предыдущем случае:
echo
"<p>For Delivery on <strong> " .
date('D jS', strtotime("$Date + $leadtime days")) .
"</strong><p>";
Теперь, когда вы хотите изменить время выполнения, код для редактирования отсутствует, просто отрегулируйте значение в массиве.
И так как я давно занимался гольф-кодом, вот все это в одной строке:
echo date('D jS',strtotime('+'.['Mon'=>[1,2],'Tue'=>[1,2],'Wed'=>[1,2],'Thu'=>[1,4],'Fri'=>[4,5],'Sat'=>[4,4],'Sun'=>[3,3]][date('D')][date('H')<16].'day'));
Как насчет этого:
$today = date("D");
$cutoff = mktime(16, 0, 0) <= time();
$offset = $cutoff ? 2 : 1;
$offset = $cutoff and $today === 'Thu' ? 4 : 1;
$offset = $cutoff and $today === 'Fri' ? 5 : 4;
$offset = $today === 'Sat' ? 4 : $offset;
$offset = $today === 'Sun' ? 3 : $offset;
echo "<p>For Delivery on <strong> " . date('D jS', strtotime("$Date $offset days")) . "</strong><p>";
Также я бы предложил использовать Углерод для работы с датами.