2011-10-29 5 views
0

Les dates sont mon ennemi, je ne peux pas les comprendre donc excusez la question boiteuse! Je supporte une application basée sur LAMP. À 2h du matin demain, les horloges remontent 1 heure en raison de l'heure d'été. J'essaie juste de comprendre si j'ai besoin d'apporter des modifications au code et/ou aux données de mon application. Voici la configuration:PHP UNIX Timestamp int (10) DST

Time Server est UTC

PHP est réglé avec Timezone date_default_timezone_set (Europe/Dublin);

Le MySql Tableau de l'instruction CREATE:

CREATE TABLE `databasename`.`events` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`name` VARCHAR(40) NOT NULL , 
`event_date` INT(10) UNSIGNED NOT NULL 
) ENGINE = MYISAM ; 

je stocke les événements en utilisant:

mysql_query("INSERT INTO `events` (`name`, `event_date`) VALUES ('name', ".time().")"); 

Je vérifie pour les événements à venir dans la base de données en utilisant une requête similaire à ceci:

mysql_query("SELECT `id`, `name` FROM `events` WHERE `event_date` - " . time() . " < 0"); 

Sera-t-il les évents après 2h du matin demain sortent 1 heure tôt ou devrais-je être ok?

+0

Il pourrait être le cas pour l'événement à * exactement * 2 heures. – GolezTrol

+0

Merci - modifier pour ajouter, la première requête est incorrecte. il devrait être: sql_query ("INSERT INTO' events' ('nom',' event_date') VALUES ('nom', ". $ epochinfuture.") "); – Niall

Répondre

1

'Europe/Dublin devrait utiliser DST (commutateur automatique) de Dublin, de sorte que vous êtes bon

+0

Ok merci pour cela - Donc juste pour comprendre (et je suis sûr que d'autres vont chercher ça pour les années à venir!), La fonction time() de PHP prend en compte les paramètres de timezone et n'est pas seulement UTC craignait. Par exemple: mktime (1:59 am) == mktime (2:59 am)? – Niall

+0

date_default_timezone_set définit le TZ, toutes les fonctions liées au temps l'utilisent puis il y a des fuseaux horaires physiques (ils ressemblent à des rayures sur la carte) et du temps "réel" utilisé par différentes villes/pays avec dst et autres sauts fuseaux horaires et retour. C'est pourquoi php utilise les paramètres liés à la ville et non le type de syntaxe "utc +1". Dublin était en fait hors de son fuseau horaire physique et reviendra bientôt, grâce à ce morceau de code date_default_timezone_set ('Europe/Dublin'); ce n'est pas ton problème – bcat

+0

Merci pour votre aide. – Niall