1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : décembre 2017
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Comparaison de deux dates - Javascript et localStorage

    Bonjour à tous,

    Je chercher créer pour une webapp un script pour afficher ou non une notification si la date actuelle est supérieur à la date de première ouverture de l'app.
    La condition que j'aimerais c'est today+5jours mais pour tester j'utilise today+1minute.

    Voilà le code que j'ai fait pour l'instant, à priori ce qui bloque c'est mon (todayLog > notifFive) et je ne comprends pas pourquoi.
    Ma configuration c'est un fichier notifications.js appelé en fin de </body> dans mon doc. Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    // Vérifier si 'firstLog' est déjà dans localStorage
    var firstLog = localStorage.getItem('firstLog');
    // Créer 'todayLog' dans localStorage avec la date du jour
    var todayLog = localStorage.setItem('todayLog', new Date());
     
    // Fonction pour ajouter du temps
    function dateAdd(date, units) {
        var ret = new Date(date);
        //ret.setDate(ret.getDate() + units); // ajouter jours
        ret.setMinutes(ret.getMinutes() + units); // ajouter minutes
        return ret;
    }
    // Création de la variable 'notifFive' pour ajouter du temps à 'firstLog' avec la fonction 'dateAdd'
    // Puis ajout de 'notifFive' au localStorage
    var notifFive = dateAdd(firstLog, 1);
    	notifFive = localStorage.setItem('notifFive', notifFive);
     
    // Si firstLog n'existe pas, le créer et l'enregistrer
    if (firstLog == null) {
        localStorage.setItem('firstLog', new Date());
    } else {
    	if (todayLog > notifFive) {
    	    document.getElementById("notif5").style.display = 'block',
    	    localStorage.setItem('notification', 'Show notification');
        } else {
    		// Sinon masquer notification et afficher Hide notification
    	    document.getElementById("notif5").style.display = 'none',
    	    localStorage.setItem('notification', 'Hide notification');
        }
    }
    Si vous avez des idées ? Merci !

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    février 2009
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

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

    Informations forums :
    Inscription : février 2009
    Messages : 5 761
    Points : 21 160
    Points
    21 160
    Billets dans le blog
    39

    Par défaut



    Ne pas confondre getItem avec setItem !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    // Fonction pour ajouter du temps
    function dateAdd( date, units ){
      let ret = new Date( date );
     
    	//ret.setDate(ret.getDate() + units); // ajouter jours
     
    	ret.setMinutes( ret.getMinutes() + units); // ajouter minutes
     
    	return ret;
    }
     
    // Vérifier si 'firstLog' est déjà dans localStorage
    const firstLog = localStorage.getItem('firstLog');
     
    // Créer 'todayLog' dans localStorage avec la date du jour
    localStorage.setItem('todayLog', new Date());
     
    const todayLog = localStorage.getItem('todayLog' );
     
    // Création de la variable 'notifFive' pour ajouter du temps à 'firstLog' avec la fonction 'dateAdd'
    // Puis ajout de 'notifFive' au localStorage
    let notifFive = dateAdd( firstLog, 1 );
     
    localStorage.setItem( 'notifFive', notifFive );
     
    notifFive = localStorage.getItem( 'notifFive' );
     
    let notification = "";
     
    // Si firstLog n'existe pas, le créer et l'enregistrer
    if ( firstLog == null ){
    	localStorage.setItem( 'firstLog', new Date() );
    } else {
    	if ( todayLog > notifFive ){
    		localStorage.setItem( 'notification', 'Show notification' );
     
    		notification = localStorage.getItem( 'notification' );
    	} else {
    		localStorage.setItem( 'notification', 'Hide notification' );
     
    		notification = localStorage.getItem( 'notification' );
    	}
     
    	console.log( "firstLog = ", firstLog );
    	console.log( "todayLog = ", todayLog );
    	console.log( "notifFive = ", notifFive );
    	console.log( "notification = ", notification );
    }

    Blog



    Nota bene : si vous devez être compatible avec les navigateurs obsolètes (IE8 et plus), vous devez convertir les codes ES2015 en ES5 avec Babel.

    FAQ JS Tutoriels JS

    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.)

Discussions similaires

  1. comparaison de deux dates dans un ordre sql
    Par opeo dans le forum PHP & MySQL
    Réponses: 2
    Dernier message: 21/03/2007, 15h34
  2. comparaison de deux dates
    Par gloglo dans le forum java.util
    Réponses: 4
    Dernier message: 16/01/2007, 14h39
  3. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 12h16
  4. comparaison de deux dates
    Par colombe dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/07/2006, 19h44
  5. [VB6] Comparaison de deux dates dans une requête
    Par paradeofphp dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/06/2006, 20h45

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