Я пытаюсь вычислить , если текущее время находится в пределах часа работы ресторана.
Этот вопрос был задан очень много на Stackoverflow, но я не нашел тот, который может объяснить проблемы, которые у меня возникают. Кроме того, было бы неплохо увидеть идею о том, как это сделать.
В настоящее время он ломается, если день закрыт (воскресенье в этом примере), или если он включен в "субботу" (так технически 1 утра в воскресенье). У меня есть чувство, что мне придется изменить способ хранения данных для учетной записи после полуночи, но я пытаюсь работать с тем, что у меня есть сейчас. Это проблема, потому что большинство ресторанов перечисляют свое время открытия в течение заданного дня с 5:00 до 2:00, а не с 17:00 до 12:00, 12:00 - 2:00.
В любом случае, вот что я имею. Скажите, пожалуйста, лучший способ сделать это.
У меня есть время, подобное этому:
$times = array(
'opening_hours_mon' => '9am - 8pm',
'opening_hours_tue' => '9am - 2am',
'opening_hours_wed' => '8:30am - 2am',
'opening_hours_thu' => '5:30pm - 2am',
'opening_hours_fri' => '8:30am - 11am',
'opening_hours_sat' => '9am - 3pm, 5pm - 2am',
'opening_hours_sun' => 'closed'
);
Это код, который я использую сейчас:
// Get the right key for today
$status = 'open';
$now = (int) current_time( 'timestamp' );
$day = strtolower( date('D', $now) );
$string = 'opening_hours_'.$day;
$times = $meta[$string][0]; // This should be a stirng like '6:00am - 2:00am' or even '6:00am - 11:00am, 1:00pm to 11:00pm'.
// Does it contain a '-', if not assume it closed.
$pos = strpos($times, '-');
if ($pos === false) {
$status = 'closed';
} else {
// Maybe a day has multiple opening times?
$seating_times = explode(',', $times);
foreach( $seating_times as $time ) {
$chunks = explode('-', $time);
$open_time = strtotime($chunks[0]);
$close_time = strtotime($chunks[1]);
// Calculate if now is between range of open and closed
if(($open_time <= $now) && ($now <= $close_time)) {
$status = 'open';
break;
} else {
$status = 'closed';
}
}
}
ПРИМЕЧАНИЕ: current_time ('timestamp', 0) является функцией WordPress.