我正在尝试计算两天之间的天数,但我遇到了夏令时的问题.这是我的代码:
function date_diff($old_date, $new_date) {
$offset = strtotime($new_date) - strtotime($old_date);
return $offset/60/60/24;
}
Run Code Online (Sandbox Code Playgroud)
只要天数都在同一个DST期间,就可以正常工作:
echo date_diff('3/15/09', '3/18/09'); // 3
Run Code Online (Sandbox Code Playgroud)
但如果它们相距甚远则不是:
echo date_diff('11/15/08', '3/18/09'); // 122.95833333333
Run Code Online (Sandbox Code Playgroud)
我想要偶数天,而不关心夏令时.我想我可以绕过结果,但感觉很糟糕.有更好的(简单)方式吗?如果我可以避免它,我不想写一整天解析和计数 - 避免闰年的事情.
(注意:这必须在php 5.1.6下运行,因此5.3中的某些日期功能可能无法使用.)
更多信息:我将获取偏移量并将其添加到数据库中的其他日期时间,并且我只希望更改日期部分,而不是时间部分.无论如何,结果舍入将无效,因为当我进行添加时,它会在另一个方向上下一个小时.也许对整个问题有一个更好的方法....
在没有夏令时,GMT/UTC的情况下强制日期进入时区:
function date_diff($old_date, $new_date) {
$offset = strtotime($new_date . " UTC") - strtotime($old_date . " UTC");
return $offset/60/60/24;
}
echo date_diff('3/15/09', '3/18/09'); // 3
echo date_diff('11/15/08', '3/18/09'); // 123
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8574 次 |
| 最近记录: |