Pagina 1 van 1

PHP, MySQL en timestamps

Geplaatst: 13 dec 2010, 20:55
door ubremoved_539
Het lijkt iets dom, maar geraak er niet meteen uit...

In MySQL doe ik een "update mytable set mytimestamp = utc_timestamp()" waarbij in de kolom mytimestamp inderdaad de UTC tijd terecht komt (ie. 2010-12-13 18:59:33)

Indien ik dit in PHP wil afbeelden in de lokale tijd gaat het echter fout...

Code: Selecteer alles

<?php date_default_timezone_set("Europe/Brussels"); ?>
date db: <?php echo $row['mytimestamp'] ?><br/>
strtotime: <?php echo strtotime($row['mytimestamp']) ?><br/>
date: <?php echo date("l, F jS Y G:i", strtotime($row['mytimestamp'])) ?><br/>
date_default_timezone_get: <?php echo date_default_timezone_get(); ?><br/>
date.timezone: <?php echo ini_get('date.timezone'); ?>
...geeft namelijk...
date db: 2010-12-13 18:59:33
strtotime: 1292263173
date: Monday, December 13th 2010 18:59
date_default_timezone_get: Europe/Brussels
date.timezone:
De timestamp die uit de database komt is dus correct, maar het probleem zit hem dat strtotime deze timestamp nogmaals gaat omzetten in UTC (op basis van de date_default_timezone_get) zodat hij op 17:59 uitkomt, en daarna de date functie hem terug naar de lokale tijd zet (wederom op basis van de date_default_timezone_get) zodat hij terug op 18:59 uitkomt (ipv. 19:59).

Tips hoe ik dit het beste oplos... ?

Re: PHP, MySQL en timestamps

Geplaatst: 13 dec 2010, 21:16
door ubremoved_539
Dit is alvast m'n Quick and dirty oplossing...

Code: Selecteer alles

function strtoutctime($s) {

  $currts = date_default_timezone_get();
  date_default_timezone_set("UTC");
  $result = strtotime($s);
  date_default_timezone_set($currts);
  return $result;
}
... zodat ik het volgende kan doen...

Code: Selecteer alles

date: <?php echo date("l, F jS Y G:i", strtoutctime($row['mytimestamp'])) ?><br/>

Re: PHP, MySQL en timestamps

Geplaatst: 13 dec 2010, 22:40
door meon
En MySQL de timestamp als unixtime laten retourneren in de query?

Code: Selecteer alles

SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');

Re: PHP, MySQL en timestamps

Geplaatst: 13 dec 2010, 22:46
door ubremoved_539
Ik vrees dat ik dan hetzelfde probleem ga hebben... UNIX_TIMESTAMP() gaat eveneens mijn timestamp welke reeds UTC is trachten om te zetten naar wat "hij" denkt dat UTC zou moeten zijn (en ditmaal vermoedelijk op basis van de server settings, en aangezien het ding in de US staat gaat hij er dan eerst 7u aftrekken).

Moest het werken... probleem is dan dat je geen SELECT * FROM meer kan gebruiken, maar telkens verplicht ben alle velden op te geven.