PHP - 总天数不是整数

时间:2012-09-19 07:49:42

标签: php date datetime

这个问题中接受的答案: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");

2 个答案:

答案 0 :(得分:3)

您已超过DST阈值。每当您这样做时,您的持续时间(通常)会缩短一个小时或更长。如果您希望避免这种情况,请专门使用UTC。

答案 1 :(得分:0)

正如伊格纳西奥所说,这是因为通过了夏令时的开始(3月的最后一个星期日)或结束(10月的最后一个星期日)......所以你最终失去/获得了一个小时,从而搞乱了计算。

我添加的所有内容都是圆形(),它完美地处理了这种情况:)

$days = round( (strtotime($endDate) - strtotime($startDate)) / 86400 + 1);