Toon posts:

[MySQL] UNIX_TIMESTAMP(now) - php's functie time() = 9 uur

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een webapplicatie gemaakt (dah!, jullie vast ook), die gebruik maakt van PHP en MySQL (net als zovelen met mij). In MySQL worden tijden opgeslagen in het eigen MySQL datumformaat, en binnen php gebruik ik epoch seconden (ja, ben hier vast ook weer niet de enige in). Maar nu het vreemde, als ik met MySQL een datum omzet naar epoch seconden, wijkt het getal exact 9 uur af van hetgeen php zou teruggeven.

Als test query ik MySQL als volgt:
PHP:
1
SELECT now() as "now", UNIX_TIMESTAMP(now()) as "epoch"

resultaten gooi ik in een associative array, genaamd Info: zodat ik dit kan doen:
PHP:
1
2
3
4
5
    print "PHP time (time();): ".$t."\n";
    print "PHP DateString (date(".DATESTRING_FULL."): ".date(DATESTRING_FULL, $t)."\n";
    print "MySQL DateString: ".$Info['now']."\n";
    print "MySQL Epoch: ".$Info['epoch']."\n";
    print "Epoch Diff (hours): ".($t - $Info['epoch'])/HOUR."\n";
En wat dan weer het volgende teruggeeft:
code:
1
2
3
4
5
PHP time (time();): 1088773781
PHP DateString (date(D j M Y H:i): Fri 2 Jul 2004 15:09
MySQL DateString: 2004-07-02 15:09:41
MySQL Epoch: 1088806181
Epoch Diff (hours): -9


Om het met de tijden nog leuker te maken, zijn dit de response headers die ik op dit request terug kreeg
code:
1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Content-Type: text/plain
Server: Microsoft-IIS/6.0
X-Powered-By: PHP/4.3.3
X-Powered-By: ASP.NET
MicrosoftOfficeWebServer: 5.0_Pub
Date: Fri, 02 Jul 2004 13:09:41 GMT
Connection: close
Maar dat klopt natuurlijk gewoon, wij lopen nu twee uur voor op GMT, .. ..

Leuk he! Nou, niet echt - heeft iemand een ideetje over hoe ik iig php en MySQL het met elkaar eens kan laten zijn? Dat wat PHP mij over de datum verteld komt overeen met m'n systeemtijd, dus dat zal dan ook wel goed zijn.

Thanx a lot, alvast!

(zelf denk ik aan een tijdzone conflict, .. maar waar zou ik dat kunnen instellen?)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

Volgens mij kun je met mktime in PHP de tijdzone instellen, maar dat zou ik je niet met zekerheid kunnen zeggen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 20:56

Tux

En als je die MySQL DateString met wat exploden en mktime() omzet naar een timestamp en die vergelijkt met de MySQL Epoch time?

Staat je IIS of Windows niet op een Amerikaanse tijdzone oid?

Ik krijg wel de goede output:
code:
1
2
3
4
5
PHP time (time();): 1088775589
PHP DateString (date(D j M Y H:i): Fri 2 Jul 2004 15:39
MySQL DateString: 2004-07-02 15:39:49
MySQL Epoch: 1088775589
Epoch Diff (hours): 0

[ Voor 53% gewijzigd door Tux op 02-07-2004 15:41 ]

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Verwijderd

Topicstarter
Ja, .. ik zou die MySQL tijd met wat exploden om kunnen toveren naar een correcte tijdstamp. Zou zelfs strtotime() van PHP kunnen gebruiken .... maar behalve dat dat niet netjes is, kom ik dan nog een ander probleem tegen. Namelijk dat ik die tijden met elkaar vergelijk om "actieve" entries te vinden. (begin_tijd > nu < eind_tijd) ..

Ik ga er inderdaad vanuit dat er iets op een Amerikaanse tijdzone staat, maar weet niet wat en niet hoe ik het kan aanpassen. Ben normaal niet zo een windows persoontje :P. Deze server beheer ik ook niet volledig zelf, .. anders zou ik wel wat kunnen rommelen. Ik kan wel aan de beheerder vragen specifieke wijzigingen aan te brengen. ...

Maar zover zijn jullie suggesties wel van help geweest. Anders moet ik maar gewoon de "dirty" manier gebruiken .....