Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 - Fatal编程技术网

如何在PHP中计算两个日期之间的工作日数?

如何在PHP中计算两个日期之间的工作日数?,php,mysql,Php,Mysql,我有这样的情况。我在DB中存储了一个字符串,如下所示: $string: 1,1,1,1,1,1,0 它的意思是:星期天是0(假日),其他所有的日子(周一…周六)都是1 然后我有两个日期:今天(ex:2012-09-07)和一些结束日期(2012-10-04) 我想知道我应该怎么做才能得到从今天到这个结束日期(在我的例子中是23天)之间的总工作日数(扣除假期)?我们应该使用数据库中存储的字符串。您尝试过date\u diff()吗? $workdays=爆炸(“,”,“1,1,1,1,1,0

我有这样的情况。我在DB中存储了一个字符串,如下所示:

$string: 1,1,1,1,1,1,0 
它的意思是:星期天是0(假日),其他所有的日子(周一…周六)都是1

然后我有两个日期:今天(ex:2012-09-07)和一些结束日期(2012-10-04)

我想知道我应该怎么做才能得到从今天到这个结束日期(在我的例子中是23天)之间的总工作日数(扣除假期)?我们应该使用数据库中存储的字符串。

您尝试过date\u diff()吗?
$workdays=爆炸(“,”,“1,1,1,1,1,0”);//将字符串转换为数组(周一至周日)
$days=0;
$time=strottime(“2012-09-07”);
$end_time=strottime(“2012-10-04”);
而($time<$end\u time)
{
$day\u of_week=日期(“N”,$time)-1;//0=周一,6=周日
如果($workdays[$day\u/u week]==1)
{
$days++;
}
$time=STROTIME(“+1天,$time);//在时间上增加一天
}

这应该对你有用。您可能需要根据其是否包含、何时开始等对其进行修改。

能否请您包含您的代码,您很难理解。请看这里:,它看起来比您使用1,1,1,1,1,0 Hank jtheman的方法更具前景。我正在考虑解决这个问题的办法,但我做不到。所以我没有代码。我在stackover上找到了这个答案,但它不符合我的要求。我的问题不放$holidays=array(“2008-12-25”、“2008-12-26”、“2009-01-01”);我的问题是在从今天到结束日期的这段时间内,比较$string 1,1,1,1,1,0和auto sub 1,当匹配SundayI时,我不认为这将提供他想要的确切输出。。他想从计算中扣除星期天,这意味着每周6天,而不是7天。也许这就是我需要的。我刚刚测试了代码,它为这些日期生成了23天。要使用现有的数组结构(Mon-Sun),可以使用
$day\u of\u week=date(“N”,$time)-1相反。我修改了代码以接受您声明的数据库字符串,并从中开始工作。
$workdays = explode(",", "1,1,1,1,1,1,0"); // turn string to array (Monday to Sunday)
$days = 0;
$time = strtotime("2012-09-07");
$end_time = strtotime("2012-10-04");
while ($time < $end_time)
    {
        $day_of_week = date("N", $time) - 1; // 0 = Monday, 6 = Sunday
        if ($workdays[$day_of_week] == 1)
            {
                $days++;
            }
        $time = strtotime("+1 day", $time); // add one day to time
    }