这个问题中接受的答案:Calculate business days是错误的。请检查
echo getWorkingDays("2012-01-01","2012-05-01",$holidays);
问题在于这个片段:
$days = ($endDate - $startDate) / 86400 + 1;
所以最小的不工作的例子是:
为什么这个表达式:
($endDate - $startDate) / (60*60*24);
不是整数:
$startDate = strtotime("2012-01-01");
$endDate = strtotime("2012-05-01");
答案 0 :(得分:3)
您已超过DST阈值。每当您这样做时,您的持续时间(通常)会缩短一个小时或更长。如果您希望避免这种情况,请专门使用UTC。
答案 1 :(得分:0)
正如伊格纳西奥所说,这是因为通过了夏令时的开始(3月的最后一个星期日)或结束(10月的最后一个星期日)......所以你最终失去/获得了一个小时,从而搞乱了计算。
我添加的所有内容都是圆形(),它完美地处理了这种情况:)
$days = round( (strtotime($endDate) - strtotime($startDate)) / 86400 + 1);