DateTime do PHP :: Diff está errado?

DateTime :: Diff deve calcular um intervalo adequado e levar em consideração o horário de verão (DST) e os anos bissextos. Embora aparentemente não seja assim. Código de horror:

$d1 = new DateTime("2011-10-30 01:05:00", new DateTimeZone("Europe/Stockholm"));
$d2 = new DateTime("2011-10-30 03:05:00", new DateTimeZone("Europe/Stockholm"));

echo $d1->getOffset() / (60 * 60);

Prints '2'! Lembre-se de que a hora UTC = 1h - 2h = 23:05:00 do dia anterio

echo $d2->getOffset() / (60 * 60);

Prints '1'. DST aconteceu. Hora UTC = 3h - 1h = 02: 05: 00.

$di = $d1->diff($d2);
echo "Hours of DateInterval: " . $di->h;

Prints '2'! Errado

$hoursofdiff = ($d2->getTimeStamp() - $d1->getTimeStamp()) / 60 / 60;
echo "Calculated difference in hours: $hoursofdiff";

Prints '3'! Corrigir

Quando o relógio marcava 03:00:00 na data especificada, todos os suecos voltavam o relógio uma hora para 02:00:00. Isso significa que o valor total passado entre 01:05 e 03:05 é de três horas, assim como o cálculo manual ecoou ao usar o TimeStamp do UNIX. E muito como calculamos em nossos dedos se usarmos um relógio analógico. Ainda mais quando calculamos a diferença entre os dois registros de data e hora do UTC, eu usei a própria lógica de desvios do PHP (!).

É PHP ou meu cérebro parou de funcionar corretamente? Uma repreensão de qualquer um de vocês, todos os deuses que existem neste site, me deixaria muito feli

Estou usando o PHP 5.4 (VC9) em um servidor Apache. Infelizmente eu uso o Windows 7 x64 como sistema operacional. Testei minha configuração em relação a todas as reivindicações de bugs nas classes Data / Hora do PHP (existem algumas relacionadas ao Windows) e posso confirmar que meu sistema não possui nenhuma delas. Exceto pelo código indicado acima, não encontrei nenhum outro erro. Eu praticamente validei todo o código e produzi o livro "O guia do arquiteto PHP para programação de data e hora" tinha para oferecer. Portanto, devo concluir que tem que ser o meu cérebro, o bruxo não cumpriu, mas pensei em dar uma chance aqui primeir

questionAnswers(6)

yourAnswerToTheQuestion