FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Recherche rapide

Vous n'êtes pas identifié(e).

Version 1.4.12 : [.tar.gz][.zip] (maj 16/01/2014)
Pack langue française pour 1.4.x : [.zip] (maj 06/01/2012)

Ancienne version :

Version 1.2.24 fr (entièrement en français) : [.zip] (maj 26/08/2011)
Pack langue française pour 1.2.x : [.zip] [.rar] (maj 15/10/2006)

Vous avez un problème ?
Avant de poser votre question sur les forums d'entraide nous vous invitons à consulter :

#1 08-11-2010 17:52:13

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 241
Site Web

Heure d'hiver et heure d'été automatique

Bonjour,

FluxBB, version 1.4.x, a introduit, dans le profil utilisateur, un nouveau champ : 'dst' pour Daylight Saving Time ou Heure d'été. (Voir db_update.php et // Add the DST option to the users table).

C'est à la fois une bonne idée et une mauvaise implémentation.

En effet, le fait de voir dans l'administration :
Ajustement pour l'heure d'été : Oui Non Pour activer l'heure d'été (avance d'une heure).
Fait que l'administrateur aura tendance a mettre Oui entre le dernier dimanche de mars et le dernier dimanche d'octobre et Non pour l'autre période.
D'ailleurs, en anglais, c'est le même problème : Check if daylight savings is in effect (advances times by 1 hour).
Alors que cette option ne sert qu'a mettre la valeur par défaut qui sera affectée aux nouveaux inscrits ou aux visiteurs et, en aucune manière, à gérer les dates de départ et d'arrêt de l'heure d'été.

Dans le profil utilisateur, il est noté :
Ajustement pour l'heure d'été : Cochez cette case si nécessaire pour que les forums affichent correctement l'heure.
Libellé ambigu (De même en anglais : Daylight Savings Time is in effect (advance time by 1 hour).) :
- Faut-il cocher si le pays où je suis applique l'horaire d'été ?
- Faut-il cocher si je suis actuellement en heure d'été ?

Cette option sur Oui sert à ajouter une heure a l'heure locale quelle que soit la date, sans tenir compte des dates de départ et d'arrêt des heures d'été.

L'utilisateur (et moi le premier) pense que ceci indique que son pays applique des heures d'été et d'hiver, or, il n'en est rien puisque aucune gestion des dates de départ et d'arrêt des heures d'été n'est effectuée ce qui entraîne systématiquement un décalage d'une heure, si l'option est sur oui, lors de l'arrêt de l'heure d'été et passage à l'heure d'hiver.
Ce qui implique également que chaque utilisateur aille modifier son profil, deux fois par an, lors des passages à l'heure d'hiver puis à l'heure d'été.

Est-il possible de gérer ça automatiquement ?

Avant de dire oui d'office, il faut réfléchir au fait que l'utilisateur est "client", quasiment tout le temps, dans son pays, mais que le forum sur lequel il se connecte peut être hébergé dans un autre pays où l'heure n'est pas la même et qui n'applique peut-être pas les heures été/hiver.

La possible gestion automatique des passages heure d'été/hiver est obligatoirement effectuée par PHP et, PHP s'exécute sur le "serveur", c'est-à-dire chez l'hébergeur du forum ; ce n'est donc pas une chose simple à mettre en place.

Dans le cas de mon forum, hébergé en France, utilisé à 98% par des résidents en France, ça serait relativement simple à mettre en place en utilisant fonction PHP localtime() qui renvoie, dans l'élément[8], 0 pour horaire d'hiver en effet et 1 pour horaire d'été.

Il faut remplacer, dans le fichier include/functions.php la ligne :

$diff = ($pun_user['timezone'] + $pun_user['dst']) * 3600;

Nota : On voit bien qu'il n'y a aucune gestion des dates de départ et d'arrêt de l'heure d'été.
par

if($pun_user['timezone'] == 1) {// Faisceau horaire de la France
  $ar = localtime(time(),true);
  if($ar['tm_isdst'] == 1) $diff = 7200;
  else $diff = 3600;
}
else $diff = ($pun_user['timezone'] + $pun_user['dst']) * 3600;

 
Valable uniquement si serveur en France et majorité de membres en France.


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#2 08-11-2010 19:16:57

fanf73
Wik-wiki
Lieu : Lyon
Inscription : 12-09-2006
Messages : 4 452
Site Web

Re : Heure d'hiver et heure d'été automatique

Merci pour cette contribution smile Je crois qu'il y avait une discussion sur ce sujet sur le .org, il faudrait que je la retrouve pour voir ce qu'en disent les développeurs.

Edit :

Christian a écrit :

There is no automatic function which switches daylight saving time on or off / Il n'y a pas de fonction automatique qui fasse le changement d'heure

http://fluxbb.org/forums/viewtopic.php?id=4796

Mais comment fonctionne la version 1.2 ? Je n'ai pas souvenir d'avoir modifié de paramètres sur mon forum lors du passage à l'heure d'hiver, et je n'ai aucun décalage hmm.

Dernière modification par fanf73 (08-11-2010 19:19:50)


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#3 09-11-2010 10:47:19

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 241
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonjour,

Je me suis aperçu que bien que des serveurs (hébergeurs) soient situés en France, l'information de retour de fuseau horaire (date('e') ou date_default_timezone_get()) n'est pas systématiquement Europe/Paris et, bien que théoriquement toute l'Europe applique les mêmes dates de départ et d'arrêt de l'horaire d'été, il est préférable de forcer le fuseau horaire de Paris.
Donc, les lignes modifiées deviennent :

//[Modif oto] Gestion automatique heure d'été
// Origine : $diff = ($pun_user['timezone'] + $pun_user['dst']) * 3600;
if($pun_user['timezone'] == 1) {// Fuseau horaire de la France
  date_default_timezone_set('Europe/Paris'); //On force la gestion date/heure pour la France
  if(date('I')) $diff = 7200; // Est-on en heure d'été
  else $diff = 3600;
}
else $diff = ($pun_user['timezone'] + $pun_user['dst']) * 3600;

Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#4 09-11-2010 13:06:18

fanf73
Wik-wiki
Lieu : Lyon
Inscription : 12-09-2006
Messages : 4 452
Site Web

Re : Heure d'hiver et heure d'été automatique

J'ai relancé le sujet avec le date('I') sur le .org ==> http://fluxbb.org/forums/viewtopic.php?pid=36150#p36150


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#5 09-11-2010 13:23:28

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 241
Site Web

Re : Heure d'hiver et heure d'été automatique

fanf73 a écrit :

J'ai relancé le sujet avec le date('I') sur le .org ==> http://fluxbb.org/forums/viewtopic.php?pid=36150#p36150

Bonjour,

Le problème principal de gestion des dates et d'automatisation éventuelle du passage heure hiver <-> heure été, est qu'il faudrait abandonner le support PHP 4 pour n'utiliser que PHP => 5.2.0 et, même mieux PHP => 5.3.0.
En effet, les classes DateTime et DateTimeZone (et leurs fonctions connexes) ne sont actives que depuis PHP 5.2.0.

En utilisant ces classes, il est tout-à-fait possible d'automatiser complètement les passages horaires Hiver <-> été quels que soient les serveurs et les clients.


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#6 09-11-2010 16:39:50

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 241
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonjour,

Pour gérer avec le moins d'erreur possible les passages automatiques heure d'été et heure d'hiver, il faudrait que les utilisateurs définissent, pour base de données, table users et champ timezone non pas un fuseau horaire de localisation (UTC, UTC+01:00, UTC-05:00, etc.) mais une vraie Timezone : Europe/Paris, America/New_York, America/Argentina/Ushuaia, Asia/Tokyo, Asia/Dubai, Africa/Lome, Pacific/Honolulu, etc. qui correspond aux possibilités de date.timezone = Europe/Paris du fichier php.ini ou de la fonction date_default_timezone_set().

À ce moment, un code comme :

$date_default_save = date_default_timezone_get();
date_default_timezone_set($pun_user['timezone']);
if(date('I')) .... // On est en horaire d'été chez l'utilisateur
....
date_default_timezone_set($date_default_save);

permettrait de traiter automatiquement les passages en horaire d'été.


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#7 27-03-2013 23:33:58

sklerder
Habitué
Inscription : 04-09-2012
Messages : 164
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonsoir.

Je réveille la discussion (il est temps, ce week-end on change d'heure) ...

Que penseriez-vous de la solution évoquée là : http://www.onlineaspect.com/2007/06/08/ … avascript/

Elle s'appuie sur JavaScript (et donc ne serait pas compatible pour tout le monde), mais permettrait peut-être de s'adapter un peu mieux, non ?

Dernière modification par sklerder (27-03-2013 23:34:19)

Hors ligne

#8 28-03-2013 09:58:02

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 241
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonjour,

On retombe sur les mêmes problèmes, à savoir que le script détermine le « time zone » vu par le navigateur client et c'est une donnée non fiable.
Pour obtenir des données fiables, ce doit être l'utilisateur qui valide son « time zone », non pas en termes UTC±X, mais en termes de localisation, par exemple "Europe/Paris".


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#9 28-03-2013 21:46:07

sklerder
Habitué
Inscription : 04-09-2012
Messages : 164
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonsoir.

Je ne comprends bas ce qui te "gêne", quand tu écris "donnée non fiable" hmm

Peux-tu expliciter, STP ?

Hors ligne

#10 29-03-2013 09:30:35

Otomatic
Régisseur
Lieu : Paris, France
Inscription : 12-12-2005
Messages : 3 241
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonjour,

Un navigateur sur un ordinateur localisé à Paris, interrogeant un site situé chez un hébergeur de Vancouver retournera quelle valeur pour « time zone » ?


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#11 29-03-2013 10:32:27

sklerder
Habitué
Inscription : 04-09-2012
Messages : 164
Site Web

Re : Heure d'hiver et heure d'été automatique

Bonjour Otomatic.

Le navigateur, s'il exécute du code Javascript, retourne les valeurs du poste client, c'est tout l'intérêt de la solution que j'évoque post#7 ...
Pour t'en convaincre, tu peux essayer la démo de la solution du post#7
Il y a une solution plus élaborée ici et la démo de cette solution ici
En changeant l'heure du PC local, on obtient bien un timezone "équivalent" à celui du PC local.

Reste à voir après comment utiliser/appliquer cette méthode, mais ça permettrait peut-être d'automatiser une détection sans erreur.

Ca implique aussi que cette méthode ne serait valide que si Javascript est activé dans le navigateur ...

Hors ligne

Pied de page des forums