【问题标题】:Check date is weekend or a holiday, double check检查日期是周末还是节假日,请仔细检查
【发布时间】:2013-12-19 07:02:24
【问题描述】:

好的,很抱歉这篇文章的措辞让我很头疼,我需要找到最早的交货日期,

$useStartDate = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));

我有两个功能

第一个检查日期是周末还是星期一并相应地递增

function checkWeekend ($CheckDateDate){
    if (date("w", $CheckDateDate) ==  1) { //monday
        return strtotime('+1 day', $CheckDateDate);
    }
    else if (date("w", $CheckDateDate) ==  0) { //sunday
        return strtotime('+2 day', $CheckDateDate);
    }
    else if (date("w", $CheckDateDate) ==  6) { //saturday
        return strtotime('+3 day', $CheckDateDate);
    }
    else {
        return 0;
    }
} 

第二次检查日期是否在我的假期数据库中

function checkHoliday ($CheckDateDate) {
    $result = mysql_query("SELECT * FROM tblNonDeliveryDates Where NonDeliveryDate = '$CheckDateDate'");
    if (mysql_num_rows($result) > 0) {
        return strtotime('+1 day', $CheckDateDate);
    }
    else {
        return 0;
    }
}

现在我想做的是检查这两个函数,直到它们都返回 0,我无法返回并检查日期不是周末,因为它是假期。这就是我所拥有的,但我知道这是错误的。

$CheckDate = $useStartDate;
while ($Checkdate > 0)
{
    $LastChecked = $CheckDate;
    $Checkdate = checkWeekend($CheckDate);
    $Checkdate = checkHoliday($CheckDate);
}
echo $LastChecked;

希望这很清楚。

【问题讨论】:

  • return = 0;?这是您实际代码中的错字吗?
  • 您正在“$Checkdate”(小写 d)上运行您的检查函数,但您在 while 循环的顶部使用大写 D 定义了“$CheckDate”。这些只是拼写错误,以及'return = 0'吗?
  • 是的,抱歉路人 @aztechy 这些是拼写错误,我稍微简化了代码并错过了这些。

标签: php function loops while-loop


【解决方案1】:

你可以这样试试

$CheckDate = $useStartDate;
while ($Checkdate > 0)
{
    $weekend = false;
    $holiday = false;

    if( checkWeekend($Checkdate) != 0)
        $weekend = true;
    else if( checkHoliday($Checkdate) != 0)
        $holiday = true;
    else
        $Checkdate = 0;

    if( $weekend )
       $Checkdate = checkWeekend($Checkdate);
    else if( $holiday )
       $Checkdate = checkHoliday($Checkdate); 

     $LastChecked = $Checkdate;
}
echo $LastChecked;

【讨论】:

  • 这只会让我陷入无限循环?我改变了 $Checkdate = $useStartDate;也。
  • 立即尝试。抱歉错过了条件..现在应该可以正常工作了。
  • 太棒了!我将 $LastChecked 移到了循环的开头,因为 $CheckDate 必须为 0 才能中断 while 循环,所以我在更改之前设置了它。非常感谢您的宝贵时间!
  • 没问题。我很高兴它有所帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 2021-09-09
  • 2021-08-11
  • 1970-01-01
相关资源
最近更新 更多