【发布时间】:2010-10-22 17:15:20
【问题描述】:
我正在尝试计算两天之间的天数,但遇到了夏令时问题。这是我的代码:
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中的一些日期功能可能不可用。)
更多信息:我将获取偏移量并将其添加到数据库中的其他日期时间,并且我只想更改日期部分,而不是时间部分。无论如何,四舍五入是行不通的,因为当我进行添加时,它会在另一个方向下降一小时。也许有一个更好的方法来解决整个问题......
【问题讨论】: