Я недавно обновился до PHP5 и заметил, что в приложении, которое я построил, кажется, что к некоторым моим переменным и вычислениям добавлен дополнительный час.
Я использую:
date_default_timezone_set ('Europe / London');
, что, как я понимаю, означает, что PHP использует BST в отличие от стандартного GMT, но когда я печатаю пустые переменные (возвращенные ранее как 00:00 с использованием "H:я ") - теперь я получаю 01: 00.
При вычислении разницы часов / минут между двумя датами - я также получаю дополнительный час.
Мой основной код:
<td><?php if(isset($item->start_time)) { echo date('H:i', strtotime($item->start_time)); } ?></td>
<td><?php if(isset($item->finish_time)) { echo date('H:i', strtotime($item->finish_time)); }?></td>
<td>
<?php
$start = strtotime($item->start_time);
$end = strtotime($item->finish_time);
$elapsed = $end - $start;
if($elapsed != NULL) { echo date("H:i", $elapsed); }
?>
</td>
Который для примера rown возвращает:
Начало: 08:57 (на основе $ item-> start_time как 2011-03-19 08:57:23 в моей БД)
Окончание: 12:59 (на основе $ item-> finish_time как 2011-03-19 12:59:38 в моей базе данных)
Caculation: 05:02 (Это должно быть 04: 02)