【问题标题】:How to calculate the number of business days between two dates in PHP?如何计算PHP中两个日期之间的工作日数?
【发布时间】:2012-09-07 09:40:07
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 能否请您附上您的代码,很难关注您。
  • 看看这里:stackoverflow.com/questions/336127/calculate-business-days,它看起来比你使用 1,1,1,1,1,1,0 的方法更有希望
  • 感谢 jtheman。我正在考虑解决这个问题,但我不能。所以我没有编码。
  • 我在 stackover 上找到了这个答案,但它不符合我的要求。我的问题没有放 $holidays=array("2008-12-25","2008-12-26","2009-01-01");我的问题是在从今天到结束日期的这段时间里比较 $string 1,1,1,1,1,1,0 和 auto sub 1 匹配周日

标签: php mysql


【解决方案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
    }

这应该适合你。您可能需要根据是否包含、何时启动等进行修改。

【讨论】:

  • 非常感谢。也许这是我需要的。
  • 我刚刚测试了代码,它为这些日期生成了 23 天。
  • 要使用现有的数组结构(周一至周日),您可以改用$day_of_week = date("N", $time)-1;。
  • 我已经修改了代码以接收您声明的数据库字符串,并以此为基础工作。
【解决方案2】:

【讨论】:

  • 我不认为这会提供他想要的确切输出.. 他想从计算中扣除星期日,这意味着每周 6 天而不是 7 天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
相关资源
最近更新 更多