我有两个时间戳创建日期02/09/2014 11:30 pm和03/09/2014 12:00 am。
这些时间戳之间只有30分钟的差异,但由于日期从10月10日更改为10月3日,因此应计算为一天。
我的代码是
$current_time_zone = isset($_COOKIE['IANA_timezone_key']) ? $_COOKIE['IANA_timezone_key'] : "";
$d1 = new DateTime(date('Y-m-d'), timezone_open($current_time_zone));
$d2 = new DateTime(date('Y-m-d'), timezone_open($current_time_zone));
$d1->setTimestamp($row["transitions_date"]); // $row["transitions_date"] has timestamp value
$d2->setTimestamp($curr_transition_in_date); // $curr_transition_in_date has timestamp value
$diff = date_diff($d1, $d2);
$day_difference = $diff->days;
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
你不能指望date_diff()的返回对象与所需的日差,因为它基于实际的时差。最简单的方法是自己调整它。
$d1 = new DateTime(date('Y-m-d'));
$d2 = new DateTime(date('Y-m-d'));
$d1->setTimestamp($row["transitions_date"]);
$d2->setTimestamp($curr_transition_in_date);
$diff = date_diff($d1, $d2);
$day_difference = $diff->days;
echo 'Actual output from date_diff: '.$day_difference;
echo '<br>';
if($d2->format('H:i:s') < $d1->format('H:i:s')){
$day_difference++;
}
echo 'Corrected output: '.$day_difference;