fla*_*ash 5 php time if-statement date and-operator
我有一个如下所示的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"};
Run Code Online (Sandbox Code Playgroud)
例如,让我们假设用户输入$start_day的sun
$start_time是143400 $end_day作为wed $end_time作为140000
以上持续时间表示我们处于范围内,并且应该显示我们要显示的任何内容,直到明天下午2点为止。我在美国东部时间。
我正在使用以下代码以获取星期几和时间的当前日期:
date_default_timezone_set('America/Toronto');
$arradate = strtolower(date('D'));
$nowtime = (int)date('His');
Run Code Online (Sandbox Code Playgroud)
问题陈述:
我想知道如果我需要使用逻辑,以便它打印任何内容Sunday 143400和Wednesday 140000。
if() {
echo "Its in range";
}
Run Code Online (Sandbox Code Playgroud)
情况:
如果该替代适用于从上午8点的星期一到下午6 点的星期一,而今天是星期三,则该替代不适用。
如果它是星期一下午6点和星期五下午6点,那么覆盖将在星期一,星期二全天,星期三全天,星期四全天,星期五至下午6点工作6个小时
如果周日下午6点和周一下午6点,然后进入倍率为工作在周一6小时和周一18小时。
如果其星期二下午6点和星期五下午6点,而今天是星期二晚上9点,则优先选择将适用。
如果周四下午6点和周三下午6点,然后进入倍率工作了周四6小时,上周五24小时,上周六24小时,上周日24小时,周一24小时,周二24小时,周三24小时和18小时在星期四。
这个问题的困难部分在于处理周末“环绕”的范围,即您的示例案例 5
我建议设置一个涵盖两周的参考天数数组
$days = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'];
$days = array_merge($days, $days);
Run Code Online (Sandbox Code Playgroud)
对其进行切片,使其从起始点当天开始(将从 0 开始重新索引)
$days = array_slice($days, array_search($startDay, $days));
Run Code Online (Sandbox Code Playgroud)
然后,您可以为现在和终点构建一个参考整数
$nowRef = (int) (array_search($nowDay, $days) . $nowTime);
$endRef = (int) (array_search($endDay, $days) . $endTime);
Run Code Online (Sandbox Code Playgroud)
请注意,您可以对起点执行相同的操作,但由于 days 数组以$startDay(索引 0)开头,这相当于$startTime
你的 if 条件就变成了
if ($nowRef >= $startTime && $nowRef <= $endRef) {
// IN RANGE
}
Run Code Online (Sandbox Code Playgroud)
注意:这假设您的用户输入已经过验证,并且如果开始日期和结束日期相同,则结束时间大于开始时间
您的命名约定有点不一致,因此我重命名了一些变量并切换为驼峰式大小写以提高可读性
$nowDay = $arradate;
$nowTime = $nowtime;
$startDay = $start_day;
$startTime = $start_time;
$endDay = $end_day;
$endTime = $end_time;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |