IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

JS récupérer la date de la page html en cours


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut JS récupérer la date de la page html en cours
    Bonjour à toutes et à tous,
    je suis à la recherche d'une méthode me permettant de récupérer la date de modification du fichier (page html en cours).
    j'ai écumé les forums et autres FAQs et trouvé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.lastModified); // renvoie: 11/28/2015 16:11:15
    sur le site: https://developer.mozilla.org/fr/doc...t/lastModified
    mon problème c'est que c'est la date et l'heure actuelle que j'affiche avec le code suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="DernierMaJ"></span><script>dateMaJ(document.lastModified, 'DernierMaJ');</script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	// Récupère la date de mise à jour d'une page ; 'DatMod' et en retour, met à jour l'objet span ayant our id : 'id_span'
    	function dateMaJ(DatMod, id_span)
        {
    		var dateModif = new Date(DatMod);
    		var jour = dateModif.getDate();		// Valeur de retour : getDate() renvoi Un entier entre 1 et 31 correspondant au jour du mois de la date indiquée selon l'heure locale.
    		var mois = dateModif.getMonth()+1;	// Valeur de retour : getMonth() renvoi un entier entre 0 et 11 selon le mois de la date indiquée et d'après l'heure locale (0 correspond à janvier, 1 à février, et ainsi de suite).
    		var annee=dateModif.getFullYear();	// Valeur de retour : getFullYear() renvoi un entier correspondant à l'année de la date selon l'heure locale. a valeur renvoyée par getFullYear() est un nombre absolu. Pour les dates entre les années 1000 et 9999, getFullYear() renvoie un nombre à quatre chiffres, par exemple 1995. Utilisez cette fonction pour vous assurer qu'une année est compatible avec les années postérieures à l'an 2000.
    		var heures=dateModif.getHours();	// Valeur de retour : getHours() renvoi un entier entre 0 et 23 correspondant à l'heure de la date indiquée selon le temps universel.
    		var minutes=dateModif.getMinutes();	// Valeur de retour : getHours() renvoi un entier entre 0 et 59 représentant le nombre de minutes pour la date indiquée, selon l'heure locale.
    		var MaJ = jour+"/"+mois+"/"+annee+" à "+heures+":"+minutes;
    		document.getElementById(id_span).innerHTML = 'Derni&egrave;re mise &agrave; jour de cette page : ' + MaJ;
    	}
    Quelqu'un peut-il (elle) m'indiquer où je fais erreur ?
    Merci.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    console.log( document.lastModified ); fonctionne parfaitement sur Chrome, Firefox et Edge. Bien entendu, après avoir modifié le document, il faut attendre quelques secondes avant de l'ouvrir et l'on voit alors que l'heure de la dernière modification diffère bien de l'heure de l'ordinateur.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    merci danielhagnoul,
    je suis sous opéra, je n'ai pas pensé à essayer sous d'autres navigateurs, je ne savais pas que des "instructions de base" n'étaient pas forcément supportées par tous les navigateurs.
    je n'ai pas le temps aujourd'hui de faire des vérifications (obsèques). Je regarderai en début de semaine.
    J'ai simplement re-re vérifié sous opéra et évidemment c'est pareil.
    et effectivement j'attends bien quelques minutes avant toute vérification pour que l'heure ait changé.

  4. #4
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Bonjour,
    je suis passé sous 'firefox' est le problème est le même.
    sans rien changer à mon fichier j'ai lancé plusieurs fois la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    console.log( document.lastModified );
    01/14/2017 10:59:34 
    undefined
    console.log( document.lastModified );
    01/14/2017 11:00:02 
    undefined
    console.log( document.lastModified );
    01/14/2017 11:00:18 
    undefined
    et à chaque fois l'heure change alors que ma page php à été modifiée le 14/01/201/ à 10:56

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    (...)alors que ma page php à été modifiée le(...)
    dans ce cas ta page est « reconstruite » avant chaque transmission au client de ce fait la document.lastModified correspondra à l'heure à laquelle la page est appelée.

    Attendu que tu es en PHP, autant gérer une variable $dateMaJ = '14/01/201/ à 10:56' et l'afficher directement dans ta page via un echo $dateMaJ.

  6. #6
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Attendu que tu es en PHP, autant gérer une variable $dateMaJ = '14/01/201/ à 10:56' et l'afficher directement dans ta page via un echo $dateMaJ.
    Ok mais pour plusieurs centaines de pages (1500 environ) c'est lourd à gérer.
    je le fais actuellement avec un base MySql le problème est que j'ai oublié plusieurs fois le saisir la date de modification sur plusieurs pages et que je sais plus où j'en suis.
    C'est la raison de mon envie de changer de système pour quelque chose de plus automatique et fiable.
    Y a t'il un équivalent php au document.lastModified de JS.
    Merci

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Ok mais pour plusieurs centaines de pages (1500 environ) c'est lourd à gérer.
    Le plus simple, me semble t-il dans ce cas, serait de te faire une routine de récupération des tes fichiers, date comprise, et de mettre ta base à jour.

    Sinon regarde peut être du coté de filemtime().

  8. #8
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Merci beaucoup NoSmoking,
    Sinon regarde peut être du coté de filemtime().
    Je pense que la solution est là.
    voici le code que j'utilise suite à cette information (pour le cas où çà intéresserait quelqu'un).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
            // $path contiendra le chemin complet du fichier/page en cours
            // $_SERVER est un tableau contenant des informations comme les en-têtes, dossiers et chemins du script. Les entrées de ce tableau sont créées par le serveur web. 
            $path = $_SERVER['SCRIPT_NAME']; // 'SCRIPT_NAME' Contient le nom du script courant. Cela sert lorsque les pages doivent s'appeler elles-mêmes. La constante __FILE__ contient le chemin complet ainsi que le nom du fichier (i.e. inclut) courant. 
            $filename = basename ($path); // basename () — Retourne le nom de la composante finale d'un chemin
            if (file_exists($filename)) { echo '<span id="DernierMaJ">Derni&egrave;re mise &agrave; jour de cette page : ' . date ("d m Y H:i:s", filemtime($filename)).'</span>'; }
    ?>
    Il reste un petit souci, c'est un décalage d'une heure (été/hiver je pense). Un fichier modifié à 9:51 affiche 8:51.

    Existe t-il un moyen, propre, d'afficher correctement (sans parler d'ajouter 1 car lors du changement d'heure çà risque de ne plus le faire).
    Merci

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    filemtime renvoie un timestamp, donc en temps universel (UTC). Si tu veux qu’il s’affiche en accord avec la zone horaire du client, le plus simple et fiable à mon avis, c’est d’envoyer au client une date en temps universel et de l’adapter côté client avec JavaScript. Pour être sûr que le client l’interprète en temps universel, l’information de zone doit être présente dans la date, et tu peux faire ça par exemple avec le format ISO 8601 que fournit date('c', filemtime($filename)).

    Code console : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> date = new Date("2004-02-12T15:19:21+00:00")
    Date 2004-02-12T15:19:21.000Z
     
    // mon navigateur est sous UTC+01:00
    >> date.toLocaleString()
    "12/02/2004 à 16:19:21"

    Voir toLocaleString.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Bonsoir,
    Voir toLocaleString.
    Merci Watilin, Je vais fouiller çà.
    J'aurai préféré tout avoir dans le même langage JS ou PHP. Mon client et mon serveur sont sur la même machine. Wampserver sur mon PC fixe (idem sur mon PC portable) et KSWeb sur ma tablette.
    Mon "site" est un DRS qui compile une douzaine de bouquins de jeu de rôle D&D 3.5, que je possède. Je ne pourrai donc jamais le mettre en ligne à cause du copyright. Il me sert lors de mes parties.
    Ceci pour expliquer qu'il ne devrait pas y avoir un gros décalage entre client et serveur.
    Merci

  11. #11
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Ah c’est sûr, si tout est sous ton contrôle sur la même machine, tu n’as pas besoin de mélanger plusieurs langages.

    Pour ton problème de décalage horaire, c’est une info qui n’est pas transmise dans les métadonnées des fichiers (du moins à ma connaissance). En clair, en regardant la date de modification d’un fichier, tu n’as pas moyen de savoir si cette date a été inscrite en heure d’été ou d’hiver.
    Mais peut-être qu’il y a un moyen de corriger ça que je ne connais pas. Si ça peut t’aider, les anglophones utilisent le terme Daylight Saving Time (DST).
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  12. #12
    Membre habitué Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Points : 144
    Points
    144
    Par défaut
    Merci à tous pour vos contributions.
    Je vais en rester là avec mon décalage d'une heure.
    J'ai passé trop de temps sur le sujet pour le peu que çà change. Quand je regarderai mes pages des jours auront passé et la différence ne se verra plus entre la mise à jour d'une page et celle d'une autre.
    J'aurai aimé le faire comme il faut mais tan-pis.
    Encore merci et à bientôt peut-être sur ce forum.
    Melk

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer des info dans une page html
    Par DORBRITZ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/03/2008, 11h13
  2. Récupérer du texte dans une page HTML
    Par iks22 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/12/2006, 09h10
  3. Erreur, Parser : récupérer les liens d'une page html
    Par floflo_2006 dans le forum Général Java
    Réponses: 5
    Dernier message: 13/12/2006, 01h26
  4. Récupérer des données sur une page HTML
    Par rupeni dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/11/2005, 17h22
  5. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo