我试图计算两天之间的天数,但我遇到夏令时问题。这里是我的代码:如何减去两个日期,忽略PHP中的夏令时?
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日期功能可能无法使用。)
更位信息:我要带偏移,并添加它与其他日期时间在一个分贝,我只想要一天的部分改变,而不是时间的一部分。原来四舍五入是行不通的,无论如何,因为当我添加它时,它会在另一个方向上停留一个小时。也许有一个更好的办法来解决整个问题......
在我的所有日期数学似乎工作之前添加此项: date_default_timezone_set('UTC'); – sprugman 2009-04-29 22:49:48
使用date_default_timezone_set('UTC');是一个很好的方法来做到这一点。请注意,如果您的网页需要其他日期,则可能会导致其他日期的准确性产生副作用。如果您的网页上没有其他日期,请忽略此评论。 :-) – artlung 2009-04-29 23:04:22