webForumDet fria alternativet

Sommartid

5 svar · 484 visningar · startad av Gislaved.net

Gislaved.netMedlem sedan juni 20001 521 inlägg
#1

Jag har vissa sidor som ligger på en server som jag inte kan ändra klockan på, och servern visar lokal tid någonstans i USA.

Jag knåpade precis ihop följande funktion för att automatiskt växla mellan sommartid och normaltid. Är den korrekt? Jag har testat med några datum, och det verkar stämma. Finns det något smidigare sätt att skriva det på?

$startsommar = gmdate("Ymd02",strtotime("last Sunday",gmmktime(0,0,0,4,1,date("Y"))));
$slutsommar = gmdate("Ymd03",strtotime("last Sunday",gmmktime(0,0,0,11,1,date("Y"))));
$dagensdatum = gmdate("Ymdh");
if(($startsommar < $dagensdatum) && ($slutsommar > $dagensdatum)){
        $sommartid = 1;   // 0 = vintertid, 1 = sommartid  
} 
$datum = gmdate("YmdHis", time() + (($sommartid + 1) * 3600));
Cri11eMedlem sedan aug. 200235 inlägg
#2
date('I');

Returnerar 1 om det är sommartid och 0 om det är vintertid.

$datum = gmdate("YmdHis", time() + ((date('I') + 1) * 3600));

Borde ge samma resultat som din funktion

Gislaved.netMedlem sedan juni 20001 521 inlägg
#3

Har du ens provat den funktionen? Den ger inte riktigt det resultat du beskriver.

nkrantzMedlem sedan apr. 2002830 inlägg
#4

$datum = gmdate("YmdHis", time() + ((date('I') * 1) * 3600)); borde det väl vara? 0+1 = 1, 1+1 = 2 medans 0*1 = 0 och 1*1 = 1...

Cri11eMedlem sedan aug. 200235 inlägg
#5

Gislaved.net skrev:

Har du ens provat den funktionen? Den ger inte riktigt det resultat du beskriver.

Jag har provat funktionen och

$datum = gmdate("YmdHis", time() + ((date('I') + 1) * 3600));

ger samma resultat som din kod.

Gislaved.netMedlem sedan juni 20001 521 inlägg
#6

Din kod visar hur som helst en timme fel. Koden kommer att fungera på en server som är inställd på rätt tidszon, men det är ju inte det jag är ute efter.

date('I') ger alltid noll på denna server, eftersom den inte tar hänsyn till daylight savings time.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)