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 date('I');
Returnerar 1 om det är sommartid och 0 om det är vintertid.
Så
$datum = gmdate("YmdHis", time() + ((date('I') + 1) * 3600));
Borde ge samma resultat som din funktion
Har du ens provat den funktionen? Den ger inte riktigt det resultat du beskriver.
nkrantzMedlem sedan apr. 2002830 inlägg $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
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.
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.