{"start_time"}; $d-6ren">
gpt4 book ai didi

php - 如何在特定时间段内在 php 中显示任何内容?

转载 作者:行者123 更新时间:2023-12-04 19:25:39 24 4
gpt4 key购买 nike

我有一个 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_daysun $start_time143400 $end_daywed $end_time140000
上述持续时间意味着我们在范围内,它应该显示我们想要显示的任何内容,直到明天下午 2 点,因为明天是星期三。我在 EST。

我正在使用以下代码来 拉取当前星期几和时间 :
date_default_timezone_set('America/Toronto');
$arradate = strtolower(date('D'));
$nowtime = (int)date('His');

问题陈述:

我想知道如果我需要使用逻辑来打印任何东西怎么办 Sunday 143400Wednesday 140000 .
if()    {
echo "Its in range";
}

案例:
  • 如果覆盖应该从周一上午 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);

    将其切片,使其从起点的那一天开始(它将从 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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com