php - 如何在php中的特定时间显示特定内容?
问题描述
我正在一个网站上工作,我想在特定时间在 php 中显示特定内容。
从美国东部标准时间周一下午 6 点到美国东部标准时间周五下午 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";
}
推荐阅读
- sql - 如何组合结果表中的 2 列?
- sql - 当互联网应用程序的输入是 SQL 语句的一部分时,会有哪些安全问题?
- mysql - 查询子索引是否有效
- python - 无法使用请求从网站上抓取不同公司的链接
- google-apps-script - 如何使用 onEdit 触发器获取多个单元格范围的所有旧值
- javascript - 在两条路由之间调用 post 请求方法
- python - 运行时控制 TensorFlow 模块
- struct - Coldfusion Structinsert 正在覆盖原始插入的值
- html - 使用 flexbox 垂直间隔列表和子列表项
- python - 玩python游戏背景音乐不耽误实际游戏