Redak Tøren Skrevet 6. april 2010 Del Skrevet 6. april 2010 Uansett hvordan jeg vrir hjernen, gir sommertid meg et stort problem angående hvordan tidspunkt skal manipuleres før lagring i database, og etter uthenting. DAGENS LØSNING Tidspunkt lagres etter servertid, og sommertid / vintertid legges på etter servertid (-5 tidssone og 0 eller 1 sommertid) Tidssone legges på ut ifra brukerens innstilling - Standard: +6 (norsk tid) Problemstilling: Serverens sommertid er ikke lik verden over. Det er også tvil om servertid lagrer med eller ute sommertid i SQL, og det er ikke mulig å få påvist på enkel måte. Hvis sommertid ikke lagres, bli alle historiske og fremtidige tidspunkt innenfor vintertid feil, dersom det er sommertid når tidspunktene vises (og motsatt blir alle historiske og fremtidige tidspunkt innenfor sommertid feil, når det er vintertid i visningsøyeblikket). Grunnen er at det må korrigeres for sommertid og vintertid slik at innlegg postet relativt nylig skal få korrekt tidspunkt ALTERNATIV A: Tidspunkt lagres som UTC uten sommertid (0 tidssone og 0 sommertid) Tidssone legges på ut ifra brukerens innstilling - Standard: +1 (norsk tid) Hvis nå er sommertid, legges sommertid på ut ifra brukerens innstilling Sommertid skal kun legges på dersom det lagrede tidspunktet som skal vises var, er eller skal være innenfor sommertid i forhold til brukerens regionale innstilling. Problemstilling: Mege komplisert utregning må foretas, og det må være egne funksjoner i forhold til regionale brukerinnstilling, ettersom ikke alle land har sommertid, eller har sommertid på forskjellige tidspunkt. ALTERNATIV B: Tidspunkt lagres som UTC med klokkeslett stilt etter sommertid eller vintertid (0 tidssone og 0 vintertid eller 1 sommertid) Tidssone legger på ut ifra brukerens innstilling - Standard: +1 (norsk tid) Problemstilling: Det lagrede innlegget vil kun stemme med norsk tid, og andre land som har samme sommertidsregler Lenke til kommentar
funkyboy Skrevet 7. april 2010 Del Skrevet 7. april 2010 Ville strengt tatt gått for å lagre uten tanke på sommer/vintertid. Dersom det (mot formodning) skulle være behov for å rette opp i misforståelser som følge av to timer i løpet av et helt år, kan du alternativt lage en metode ala korriger_vintertid(), hvor denne sjekker aktuell dato opp mot hvorvidt det var sommer eller vintertid på aktuelt tidspunkt. Altså, ikke kluss med dataene du lagrer, gjør det heller i visning/metode for visning dersom det skulle være behov for det (jeg kan desverre ikke se behovet, selv om dette skulle gjelde prosjekt i stor skala, som innebærer svært mye bruk i disse to timene). Lenke til kommentar
Redak Tøren Skrevet 7. april 2010 Forfatter Del Skrevet 7. april 2010 Det rammer mer enn to timer. Når vi stiller klokken til sommertid, "stiller" vi samtidig alle innlegg postet i vinterhalvåret en time frem. Ditt innlegg har kl. 14:58. I november 2010 vil det stå 15:58 på samme innlegget, men du postet det ikke 15:58. For øvrig har jeg løst problemet, og skal lagre alt i UTC. Brukere får deretter selv velge land og tidssone, og en funksjon vil hente data fra en tabell over sommertider for å avgjøre om det skal legges en time til det historiske klokkeslettet eller ei. Lenke til kommentar
funkyboy Skrevet 8. april 2010 Del Skrevet 8. april 2010 (endret) For øvrig har jeg løst problemet, og skal lagre alt i UTC. Brukere får deretter selv velge land og tidssone, og en funksjon vil hente data fra en tabell over sommertider for å avgjøre om det skal legges en time til det historiske klokkeslettet eller ei. Nice! Dette høres mer ut som en god løsning. Endret 8. april 2010 av bardoien Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå