webForumDet fria alternativet

Bugg i date()?

2 svar · 358 visningar · startad av Peeer

PeeerMedlem sedan mars 20025 362 inlägg
#1

Hej!
Har ett lurigt problem som jag verkligen inte kan lösa.

Om jag har datumet 2008-10-26 och gör om det till ett unix-timestamp mha strtotime, så får jag talet 1224972000.

Nu vill jag räkna upp ett dygn (dvs addera 24*60*60 = 86400) till datumet. Jag får då 1225058400. Detta vill jag sedan få tillbaka på "läsbar" form mha date. Problemet är att det bara lagts till 23 timmar till tidpunkten, inte 24 som det ska. Om jag ändrar talet 26 nedan till ex 25 eller 27 så fungerar det fint. Någon som har en aning om vad det här kan bero på? Kan man gå runt det på något sätt?

$date = '2008-10-26 00:00:00';
$timestamp = strtotime($date);
echo "$date = $timestamp";
$newTimestamp = $timestamp + 24*60*60;
$newDate = date("Y-m-d H:i:s",$newTimestamp);
echo "$newDate = $newTimestamp";

resulterar i

2008-10-26 00:00:00 = 1224972000
2008-10-26 23:00:00 - 1225058400

Om datumet istället är något annat (som ex. 27/10) så blir det rätt:

2008-10-27 00:00:00 = 1225062000
2008-10-28 00:00:00 - 1225148400
PeeerMedlem sedan mars 20025 362 inlägg
#2

Datumen 2005-10-30, 2006-10-29, 2007-10-28, 2009-10-25, 2010-10-31 ger exakt samma fenomen. :o

PeeerMedlem sedan mars 20025 362 inlägg
#3

Well... :r

http://bugs.php.net/bug.php?id=19914
"We are happy to tell you that you just discovered Daylight Savings
Time. For more information see:
http://webexhibits.org/daylightsaving/b.html

Då får vi tänka om lite.

Genererad på 376 ms · cache AV · v20260730165559-full.f96bc7eb