Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 确定商店是否营业?_Php_Mysql_Database Design_Strtotime - Fatal编程技术网

Php 确定商店是否营业?

Php 确定商店是否营业?,php,mysql,database-design,strtotime,Php,Mysql,Database Design,Strtotime,在PHP和MySQL中-如何确定存储是打开的还是关闭的(返回true还是false) 如果商店关门,下一个营业时间怎么安排 营业时间表示例: +----+---------+----------+-----------+------------+---------+ | id | shop_id | week_day | open_hour | close_hour | enabled | +----+---------+----------+-----------+------------+-

在PHP和MySQL中-如何确定存储是打开的还是关闭的(返回true还是false)

如果商店关门,下一个营业时间怎么安排

营业时间表示例:

+----+---------+----------+-----------+------------+---------+
| id | shop_id | week_day | open_hour | close_hour | enabled |
+----+---------+----------+-----------+------------+---------+
|  1 |       1 |        1 | 16:30:00  | 23:30:00   |       1 |
|  2 |       1 |        2 | 16:30:00  | 23:30:00   |       1 |
|  3 |       1 |        3 | 16:30:00  | 23:30:00   |       0 |
|  4 |       1 |        4 | 16:30:00  | 23:30:00   |       1 |
|  5 |       1 |        5 | 10:00:00  | 13:00:00   |       1 |
|  6 |       1 |        5 | 17:15:00  | 00:30:00   |       1 |
|  7 |       1 |        6 | 17:15:00  | 01:30:00   |       1 |
|  8 |       1 |        7 | 16:30:00  | 23:30:00   |       0 |
+----+---------+----------+-----------+------------+---------+
open_hour
close_hour
是时间类型字段。桌子设计可以吗

当前时间的示例:

  • 当前时间:周二23:00,-输出:打开,“周二16:30-23:30打开”

  • 当前时间:周二23:40,-输出:关闭,“周四16:30-23:30开放”

星期四开放,因为禁用了
开放时间.week\u day=3


现在如何处理午夜时间?这会变得更复杂

如您所见,在星期六(
开放时间.星期日=5
),开放时间为下午17:15至01:30(第二天星期日关闭)

如果当前时间是星期日凌晨1:15,则商店仍将在
营业时间.week\u day=5
营业


输出:打开,“在星期六17:15-01:30打开”

过去,我使用没有日期的时间戳(从午夜开始的秒数)来处理这个问题。因此,周六的开盘价是
62100
,收盘价是
91800

我的想法是,这消除了接近午夜时所需的一些逻辑,因为您只需要将日期开始后的秒数与时间范围进行比较

而且很容易检查从“昨天”起它是否仍然开放——只需将
86400
添加到当前“时间”(从一天开始算起的秒数)中,并对照前一天进行检查

可能都是一条SQL语句。

您可以使用PHP date()函数并将其与您的营业时间进行比较

您可以执行类似于此递归函数的操作(不是工作的PHP代码,而是PHP与伪代码的组合):

/*$当前时间的格式应为日期(“His”)*/
功能检查时间($current\u day,$current\u time)
{
在这里获取今天的MySQL行
如果(开放时间.enabled==1,其中开放时间.week\u day==$current\u day)
{

如果((日期(“His”)>=营业时间。营业时间)和($current_time请不要一次发布多个问题。将你的问题分解成更小的部分,并询问具体情况。此外,这看起来像是家庭作业,在这里不受欢迎…@JanHančič这不是一次多个问题。我的问题是如何确定商店是开着还是关着。其次,这不是家庭作业。对我来说,这看起来像家庭作业,但是如果你说不是,那么我相信你:)
/* $current_time should be in the format of date("His") */
function check_hours($current_day, $current_time)
{
    Get the MySQL row for today here

    if (Opening_Hours.enabled == 1 WHERE Opening_Hours.week_day == $current_day)
    {
        if ((date("His") >= Opening_Hours.open_hour) and ($current_time <= Opening_Hours.close_hour))
        {
            // convert_numeric_day_to_full_representation isn't a real function! make one
            return 'Open: ' . convert_numeric_day_to_full_representation($current_day) . ' ' . Opening_Hours.open_hour . ' – ' . Opening_Hours.close_hour;
        }
        elseif (date("His") < Opening_Hours.open_hour)
        {
            return 'Closed: Next opening hours: ' . convert_numeric_day_to_full_representation($current_day) . ' ' . Opening_Hours.open_hour . ' – ' . Opening_Hours.close_hour;
        }
        else
        {
            return check_hours($tomorrow, '000000');
        }
    }
    else
    {
        return check_hours($tomorrow, '000000');
    }
}