Как отображать определенный контент в определенное время в php? - PullRequest
0 голосов
/ 01 марта 2019

Я работаю над сайтом, на котором я хочу отображать определенный контент в определенное время в php.

С понедельника 18:00 по восточному поясному времени до пятницы 18:00 по восточному поясному времени, я хочу, чтобы отображался определенный контентДля этого я использую следующую логику.

$arradate = strtolower(date('D'));
date_default_timezone_set('America/Toronto');
$nowtime = date('H:i:s');
$tue_thu = array('tue','wed','thu');

if (in_array($arradate, $tue_thu) || ($arradate == 'mon' && $nowtime > '17:59:59') || ($arradate == 'fri' && $nowtime < '17:59:59')) {
echo "Hello World";
}     

Постановка задачи:

Мне интересно, есть ли что-то не так в коде, поскольку он не работалв четверг.Я нахожусь на EST, и сервер установлен на UTC.

1 Ответ

0 голосов
/ 01 марта 2019

Вы слишком усложняете логику.DateTime объекты сопоставимы, поэтому вы можете напрямую проверить, находится ли момент времени после / перед другим:

$timezone = new DateTimeZone( 'America/Toronto' );
$start    = ( new DateTime( 'monday this week', $timezone ) )->setTime( 18, 0 );
$end      = ( new DateTime( 'friday this week', $timezone ) )->setTime( 18, 0 );
$now      = new DateTime( 'now', $timezone );

if ( $now > $start && $now < $end ) {
    echo "Hello World";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...