我有一个 php 代码,如下所示,我想在其中显示一周中两个日历日之间的任何内容。
里面的值 $data->{"select_start_day"};
$data->{"start_time"};
$data->{"select_end_day"};
和 $data->{"end_time"};
由用户控制。
PHP代码:
if (file_exists('feeds/ptp-ess_landing.json')) {
$data = json_decode(file_get_contents('feeds/ptp-ess_landing.json'));
}
date_default_timezone_set('America/Toronto');
$arradate = strtolower(date('D'));
$nowtime = (int)date('His');
$start_day=$data->{"select_start_day"};
$start_time=$data->{"start_time"};
$end_day=$data->{"select_end_day"};
$end_time=$data->{"end_time"};
例如 ,让我们假设用户输入
$start_day
如 sun
$start_time
如 143400
$end_day
如 wed
$end_time
如 140000
上述持续时间意味着我们在范围内,它应该显示我们想要显示的任何内容,直到明天下午 2 点,因为明天是星期三。我在 EST。
我正在使用以下代码来 拉取当前星期几和时间 :
date_default_timezone_set('America/Toronto');
$arradate = strtolower(date('D'));
$nowtime = (int)date('His');
问题陈述:
我想知道如果我需要使用逻辑来打印任何东西怎么办
Sunday
143400
和 Wednesday
140000
.if() {
echo "Its in range";
}
案例:
最佳答案
这个问题的难点在于处理围绕周末“环绕”的范围,即您的示例案例 5
我建议设置一个涵盖两周的引用天数数组
$days = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
$days = array_merge($days, $days);
将其切片,使其从起点的那一天开始(它将从 0 重新索引)
$days = array_slice($days, array_search($startDay, $days));
然后,您可以为现在和终点构建一个引用整数
$nowRef = (int) (array_search($nowDay, $days) . $nowTime);
$endRef = (int) (array_search($endDay, $days) . $endTime);
请注意,您可以对起点执行相同操作,但由于 days 数组以
$startDay
开头。 (索引 0)这相当于 $startTime
你的 if 条件就变成了
if ($nowRef >= $startTime && $nowRef <= $endRef) {
// IN RANGE
}
注意这假设您的用户输入已经过验证,并且如果开始日期和结束日期相同,则结束时间大于开始时间
你的命名约定有点不一致,所以我重命名了你的一些变量并切换到驼峰式以提高可读性
$nowDay = $arradate;
$nowTime = $nowtime;
$startDay = $start_day;
$startTime = $start_time;
$endDay = $end_day;
$endTime = $end_time;
关于php - 如何在特定时间段内在 php 中显示任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151753/