我在一个网站上工作,我想在PHP中的特定时间显示特定内容。
从美国东部时间(EST)的下午6点(东部标准时间)到美国东部标准时间(EST)下午6点(东部标准时间),我希望显示特定的内容。为此,我使用以下逻辑。
$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。
您正在使逻辑过度复杂化。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";
}