Afficher la date et l’heure dans le fuseau horaire de l’utilisateur

Gérant un site où les rédacteurs mais surtout les lecteurs sont des quatres coins du globe (à savoir, MacTouch), il m’a paru intéressant de trouver un moyen efficace pour que les lecteurs aient la date dans leur fuseau horaire.

Avec un peu de JavaScript et un filtre SPIP, voici ma contribution qui permet cela :

Comment ça marche ?

spip_localtime.js

Téléchargez le script ci-dessus, renommez le en spip_localtime_fr.js, envoyez le sur votre serveur (à la racine) et placez dans le HEAD de chaque page le code suivant pour inclure le fichier :

<script language="JavaScript" type="text/javascript" src="spip_localtime.js"></script>

En suite, copiez dans mes_fonctions.php3 le code suivant :

function localtime_js($date, $format = "Y-m-d H:i:s") {
    return "<script language=\"JavaScript\" type=\"text/javascript\">s_lt(".strtotime($date).", '".str_replace('\\', '\\\\', $format)."');</script><noscript>".date($format, strtotime($date))." UTC</noscript>";
}

Pour finir, dans vos squelettes mettez quelque chose comme :

[(#DATE|localtime_js{'y-m-d H:i'})]

Le format de date entre accolades est sensiblement le même que la fonction PHP date et supporte le nom des jours et des mois en français. Les codes suivants sont supportés : d, F, G, H, i, j, l, m, n, s, Y et y. Ce filtre supporte aussi les échappements de caractères avec un anti-slash.

Limitations

Le serveur doit être en UTC (ou alors il faudrait adapter le JavaScript).

Si le navigateur ne supporte pas JavaScript, la date est affichée en UTC, avec le nom des jours et des mois en anglais.

Discussion

2 discussions

  • Hello,

    C’est sympa de me citer en tant qu’auteur de spipbb ou spipliste (y’a un schmil là avec un copier coller malheureux) mais c’est BoOz l’auteur de ces 2 plugins (+ d’autres contributeurs qui ont bien fait avancer le script). Pour ma part je n’ai fait qu’apporter un petit coup de main pour la doc de spipliste...

    Bravo pour ce squelette.

    Répondre à ce message

  • 2

    Bonjour,

    Je trouve l’idée très intéressante. Félicitations.

    Par contre, j’ai l’erreur suivante qui s’affiche :

    function localtime_js($date, $format = "Y-m-d H:i:s") return "" ;

    # Erreur(s) dans le squelette

    * Erreur : filtre « localtime_js » non défini,

    Je test sous spip 1.8.
    Serveur chez OVH.

    Merci d’avance pour vos commentaires.

    @

    • Salut,

      Excellente contrib :)

      J’ai moi aussi un pb similaire, mais seulement en hébergement, pas en local.
      (Je précise que je travaille sous agora, et que j’ai inclu la définition de localtime_js dans mes_fonctions_agora.php3

      En ligne (serveur dédié OVH), je me retrouve avec ce même message « Erreur : filtre « localtime_js » non défini » lorsque j’accède à une page de type "rubrique.php3" (ça fonctionne nickel avec une page de type "article.php3")

      Le problème apparait aussi bien sous IE que sous Firefox.

      Auriez-vous une idée du pourquoi du comment ?

    • Finalement le problème est réglé lorsque l’on crée un fichier mes_fonctions.php3 et qu’on y insère la définition de fonction.

      voili voila... ^^

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom

Dernière modification de cette page le 21 janvier 2007