/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Tidsstempler og tidszoner i PHP (lang)
Fra : Jonas Voss


Dato : 14-10-03 10:25

På min weblog der huserer på URLen i signaturen, poster jeg indlæg der
bliver givet et unix timestamp med time().

Serveren står i USA (Michigan), hvorfor jeg har måtte lave nogle
krumspring for at få tidsstemplet til at spille som jeg ville have
det, nemlig at vise indlæg i dansk tid. Det ordnede jeg ved at lægge
de antal timer der nu er i tidsforskellen når jeg trak indlæggene ud
af databasen igen. Indlæggene i databasen havde altså et tidsstempel
der svarede til den lokale tid de blev lagt på serveren.

Tidsstemplet og indlæggets titel bruger jeg til at trække indlæg ud
af databasen med, f.eks giver:

<http://verture.net/041201/whoosh,_what_a_>

Indlægget fra d. 04.12.01 med titlen 'Whoosh, what a ' og noget mere.

Jeg blev så anbefalet, at bruge:

   putenv("TZ=CET");

for at komme udenom besværet med at lægge tid til datostemplet. Det
fungerer også godt nok, så længe indlægget ikke er postet mellem
midnat og klokken 06 om morgenen.

Det kan illustreres hvis man klikker på det ovenstående link, og jeg
kan ikke fatte det i mit hoved.

Det har tydeligvist noget med den tidszone det bliver postet i at
gøre.

Hvis jeg laver en strftime() på det unixtimestamp der hører til det
ovennævnte indlæg, får jeg en dato der hedder 03.12.01, men den
insisterer på at indlægget blev postet 04.12.01. Det eneste jeg gør
for at vise datoen er, at trække unixtimestampet ud af databasen.

Jeg forstår ikke noget, og efter denne noget rodede gennemgang er der
sikkert heller ikke nogen af jer der forstår noget (:

Hvis der er nogen der har en minimal idé om hvad jeg kan gøre for at
fikse det er de velkomne til at svare (:

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

"Great things are afoot!"

 
 
Troels Arvin (14-10-2003)
Kommentar
Fra : Troels Arvin


Dato : 14-10-03 11:23

On Tue, 14 Oct 2003 11:24:54 +0200, Jonas Voss wrote:

> Jeg blev så anbefalet, at bruge:
>
>    putenv("TZ=CET");

Hvad er det tanken, at denne environment-variabel skal give af effekter?

Jeg vil anbefale dig at gemme alle tider i databasen i UTC og så foretage
den relevante konvertering fra/til ønsket tidszone i forbindelse med, at
du gemmer/henter. Afhængig af, hvilket DBMS, du bruger, kan du evt. lade
databasesystemet gøre hovedparten af arbejdet. SQL definerer desværre
kun tidszone-understøttelse som en valgfri SQL-feature, så det er i
relativt få DBMSer, at tidszone-håndtering kan ske på standardiseret
vis; Oracle og PostgreSQL er gode her.

--
Greetings from Troels Arvin, Copenhagen, Denmark


Jonas Voss (14-10-2003)
Kommentar
Fra : Jonas Voss


Dato : 14-10-03 13:05

In dk.edb.internet.webdesign.serverside.php, Troels Arvin <troels@arvin.dk> wrote:

> On Tue, 14 Oct 2003 11:24:54 +0200, Jonas Voss wrote:

>> Jeg blev så anbefalet, at bruge:
>>
>> putenv("TZ=CET");

> Hvad er det tanken, at denne environment-variabel skal give af effekter?

Det var vist meningen, at den skulle sætte alle tidsentries til at
være Central European Time som tidszone, og det gjorde den også, og
det er nok det der giver problemerne nu.

> Jeg vil anbefale dig at gemme alle tider i databasen i UTC og så foretage
> den relevante konvertering fra/til ønsket tidszone i forbindelse med, at
> du gemmer/henter. Afhængig af, hvilket DBMS, du bruger, kan du evt. lade
> databasesystemet gøre hovedparten af arbejdet. SQL definerer desværre
> kun tidszone-understøttelse som en valgfri SQL-feature, så det er i
> relativt få DBMSer, at tidszone-håndtering kan ske på standardiseret
> vis; Oracle og PostgreSQL er gode her.

Ok. Desværre har jeg kun adgang til MySQL, så jeg vil gå tilbage til
den måde jeg gjorde det på før, netop som du beskriver det her.

Tak for hjælpen.

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

"Great things are afoot!"

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste