webForumDet fria alternativet
Logga in / Bli medlem

Bugg i date()?

PHP

2 svar · 360 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#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
Medlem sedan mars 20025 907 inlägg
#2

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

Medlem sedan mars 20025 907 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.

270 ms totalt · 4 externa anrop · v20260731065814-full.0583408b
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)