0

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

$string: 1,1,1,1,1,1,0 

这意味着:周日为 0(节假日),其他所有日子(周一...周六)均为 1。

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

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

4

2 回答 2

2
$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
    }

This should work for you. You may need to modify it based on whether it's inclusive, when it should start, etc.

于 2012-09-07T09:50:26.503 回答
0

你试过 date_diff() 吗? http://php.net/manual/en/function.date-diff.php

于 2012-09-07T09:43:56.627 回答