我正在尝试计算两天之间的天数,但我遇到了夏令时问题。这是我的代码:
function date_diff($old_date, $new_date) {
$offset = strtotime($new_date) - strtotime($old_date);
return $offset/60/60/24;
}
只要这几天都在同一 DST 期间,就可以正常工作:
echo date_diff('3/15/09', '3/18/09'); // 3
但如果它们相距更远,则不会:
echo date_diff('11/15/08', '3/18/09'); // 122.95833333333
我想要偶数天,不关心 DST。我想我可以对结果进行四舍五入,但这感觉很笨拙。有没有更好(简单)的方法?如果可以避免的话,我不想写一整天的解析和计数避免闰年的事情。
(注意:这必须在 php 5.1.6 下运行,因此 5.3 中的某些日期功能可能不可用。)
更多信息:我将获取偏移量并将其添加到数据库中的其他日期时间,并且我只想更改日期部分,而不是时间部分。无论如何,四舍五入是行不通的,因为当我进行添加时,它会在另一个方向下降一小时。也许有一个更好的方法来解决整个问题......