所以我一直在网上搜索,试图找到某种可以很好地处理工作日计算的 PHP API。我在 stackoverflow 上找到了许多有用的答案和代码片段,但是我发现处理将工作日添加到给定日期的代码缺少我需要的某些功能(例如处理周末的假期),而且很难根据给定应用程序的需求进行定制。
所以我最终决定硬着头皮写自己的解决方案。我生成的类包含了我在 stackoverflow ( James Pasta++ ) 上找到的代码以及我去年编写的类似(且更简单)Java 类中使用的逻辑。我将它发布在这里 Q/A 风格,以防其他人遇到与我对这个概念相同的挫败感,并发现它是一个有用的解决方案。
我解决了两个基本问题 - 1)将工作日添加到提供的日期,以及 2)计算两个日期之间的工作日。我在解决这些问题时主要关心的是易用性和可扩展性。有很多地方写得效率不高;如果它成为一个问题,我当然可以重构部分代码,但至少就我的目的而言,我不会计算未来数千个工作日:-)
示例代码和源链接可以在下面的答案中找到。非常欢迎反馈和改进。