19. maj 2000 - 17:28Der er
9 kommentarer og 1 løsning
Tilpas datoen
Hej!
I et uhyre simpelt script udskrives en side afhængig af hvilken dag det er. Nu ligger min hjemmeside desværre på en amerikansk server, så dagen skifter for tidligt (elller er det for sent) i forhold til Danmark.
Hvordan får jeg tilpasset datoen, så det passer til danske forhold?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Brug gmtime i stedet for localtime. Den giver ganske vist ikke dansk tid, men GMT (Greenwich Mean Time), som er 1 eller 2 timer ved siden af Danmark. Jeg har en stump PHP-kode, hvor jeg hvert år blot skal ændre start- og slut-dato for sommertiden, og måske du kan blive inspireret af det.
$dagsdato = gmdate("Y-m-d-H-i-s",time()); // E.g. 2000-02-04 if ('2000-03-26-01-00-00'<=$dagsdato && $dagsdato<'2000-10-29-01-00-00') { $korrektion=60*60*2; } else { $korrektion=60*60*1; } $dagsdato = gmdate("Y-m-d",time()+$korrektion); // E.g. 2000-02-04
I nedenstående skal du hvert år ind og skrive de nye datoer for sommertid start og slut. Sommertidstart er 2000032601 (og de 01 skal altid være 01, for sommertid skifter altid når klokken er 01 GMT) og slut er 2000102901 (samme kommentar for 01). Jeg ville ikke tro på at en amerikansk server ved noget om dansk (undskyld: europæisk) sommertid. Grunden til at jeg kunne vise dig koden i PHP er at jeg selv har præcis samme problem med min amerikanske server. Det er rudimentært testet, men leveres uden ansvar.... ;-)
@dag = gmtime(); $dagsdato=($dag[5]+1900)*1000000+$dag[4]*10000+$dag[3]*100+$dag[2]; $ugedag=$dag[6]%7; if (2000032601<=$dagsdato && $dagsdato<2000102901) { if ($dag[2]>=22) { $ugedag = ($ugedag+1)%7; } } else { if ($dag[2]>=23) { $ugedag = ($ugedag+1)%7; } }
Well... det du har lavet virker fuldkomment som det gamle script. Jeg får at vide det er søndag, selvom det er lørdag. Hvor kan man korrigere tiden tilbage henne?
Jeg tror (men ved ikke med sikkerhed), at serveren er 6-8 timer foran.
Interessant. Vi har just passeret midnat, som du kan se, og nu har jeg faktisk afprøvet den hos min udbyder i ca. samme tidszone som din. Og lige før midnat var det lørdag, og lige efter var det søndag. Perfekt.
Har din udbyder styr på GMT-tid? Prøv at udføre:
@dag = gmtime(); print join(" ",@dag);
på din udbyder. Den kan skrive:
41 5 22 20 4 100 6 140 0
som tegn på at det er kl. 22:05:41 GMT den 20. maj (!!) 100+1900=2000.
4 tallet i linien snød mig for Perl tæller måneder fra 0 (=januar). Skriver den ikke noget der er to timer fra dansk sommertid er det din udbyder, det er galt med.
Det med 4-tallet vidste jeg jo godt, så det rigtig script skal laves om til:
(der er ændrig i begge linier, i nummer 2 fordi %7 er overflødigt). Denne ændring mht. maaneden har dog ingen betydning for vore eksperimenter lige nu.
Hvilket jo tydeligt indikerer, at der er noget i vejen. Kl. skulle altså eftersigende være 1:19:06 om mandagen.
Nu er min amerikanske udbyder ikke nem at få fat i, så hvis du kan lave en korrektion, så den trækker antallet af timer fra, så putter jeg yderligere 200 points oven i hatten! :)
Ja, den er gal, rivende gal.... Jeg forudsætter du prøvede det her til formiddag ca. kl. 10:19.
Nu bliver du nok nødt til selv at eksperimentere, så skidt med de ekstra points. Hvis det kun var tidspunktet, der var galt, skulle du bare ændre tallene 22 og 23, som der bliver sammenlignet med i mit script, med noget andet, formentlig trække 4-7 timer fra. Men det er også dagen. Så må du jo skifte ugedagene ud med det du ser, der passer, når tallene bliver 0,1,...,6. Men altså - når de så en dag korrigerer det, så det passer, så er du på Herrens mark igen.
Hvad er det dog for en udbyder? Må jeg anbefale en anden, ;-) ?
For at undgå problemer med negative tal vil jeg anbefale dig at skrive:
$ugedag=($dag[6]+6)%7;
Men hold nu øje med om de finder ud af det der med tiden. hehe ;-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.