我需要检查当前日期和时间是否在两个工作日之间,包括时间(从和到)。数据库中可以有多个记录,工作日通过PHP日期('N')存储,其中1(星期一)到7(星期日)以及小时 - 分钟通过时间存储。
例如,存储的规则可以是: week_day_from:5(星期五) week_hour_from:16:00:00 week_day_to:7(星期日) week_hour_to:18:00:00
甚至 week_day_from:7(星期日) week_hour_from:10:00:00 week_day_to:2(星期二) week_hour_to:1200:00
如何确定当前日期/时间是否适用于其中一条规则?主要想法是隐藏一些结果,如果其中一条规则适用(即不要在星期五16:00之后和星期日18:00之前显示这顿饭)
提前谢谢
答案 0 :(得分:0)
函数getdate将为您提供更准确的信息。函数getDate()将返回一个包含工作日和时间信息的数组。通过设置间隔,您可以确定是否适用。
答案 1 :(得分:0)
必须创建伪日期才能使用strtotime并与当前日期时间进行比较。伪日期是通过如下所示的条件创建的,这些条件被评论以描述我的逻辑。
我更喜欢基于MySQL查询的解决方案而不是获取所有规则并进行比较,但我找不到方法。如果你查看我的代码并告诉我你的想法,我将不胜感激。缺陷可能是......
$daynow = date("N"); //$daynow = 7;
$datetimenow = date("d-m-Y G:i:s");
if($row['week_day_from'] > $row['week_day_to'])
{// case from saturday(6) to thursday(4)
if($daynow == 7)
{
$check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days - 1 week"));
$check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days"));
}
else
{
$check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days - 2 week"));
$check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days - 1 week"));
}
}
else
{// case from thursday(4) to saturday(6)
if($daynow == 7)
{
$check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days"));
$check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days"));
}
else
{
$check_from = date("d-m-Y", strtotime("Sunday + ".$row['week_day_from']." Days - 1 week"));
$check_to = date("d-m-Y", strtotime("Sunday + ".$row['week_day_to']." Days - 1 week"));
}
}
if
(
strtotime($datetimenow) >= strtotime($check_from." ".$row['week_hour_from'])
AND
strtotime($datetimenow) <= strtotime($check_to." ".$row['week_hour_to'])
)
{
//RULE APPLIES
}