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 :

Compteur de date / date dépassée depuis X jours


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 10
    Par défaut Compteur de date / date dépassée depuis X jours
    Bonjour à tous,

    Je travail dans une grande surface et suite à la mise à jour du logiciel d’étiquetage (affichage des prix/rèf produit etc sur les étiquettes numériques) j'aurai besoin de faire un script en JavaScript.
    Je suis tout nouveau dans ce monde, j'essaye de m’y mettre pour fluidifier mon propre travail, je débute actuellement le dev (vba et js).
    Mon script : En fonction de la date d’entrée (DATE_ENTREE) d'un produit et de la date du jour (d)je voudrai que lorsque le produit est la depuis 60 ou + de 60 jours, le compteur de jours s'affiche en rouge (FGCOLOR=3).
    J'arrive à faire afficher un result en rouge sous condition mais je n'arrive vraiment pas à faire la partie compteur de jour en fonction de la date d'arrivé et la date actuel.
    J'espère avoir été compréhensible.
    Je pense avoir compris la gestion des dates mais je n'arrive pas au script espéré...
    Si vous pouvez m'aider dans la "création" de ce script ou encore me faire comprendre mes erreurs je vous en suit très reconnaissant.

    J'ai essayé avec de multiples codes, ci-joint mon code le plus aboutie à mon avis.
    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
    var result = {
        value: input
    };
    d = new Date();
    var date1 = d.getDate() + 60 + d.getMonth() + 1 + d.getYear() + 1900;
    d1 = date1.substring(10, 12) + '/' + date1.substring(5, 9) + '/' + date1.substring(13);
    d2 = new Date(#DATE_ENTREE #);
    var result = (d1 - d2);
    if (result < 60) {
        return result;;
    } else {
        result.FONTSIZE = 9;
        result.BOLD = true;
        result.FILL = true;
        result.FGCOLOR = 3;
        return result;
    };
    mais aussi avec :

    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
    var result = {
        value: input
    };
    d = new Date();
    d2 = new Date(#DATE_ENTREE #);
    dd = d.substring(10, 12) + '/' + d.substring(13) + '/' + d.substring(5, 9);
    de = #DATE_ENTREE #.substring(3, 5) + '/' + #DATE_ENTREE #.substring(0, 2) + '/' + #DATE_ENTREE #.substring(6);
    var result = (dd - de);
    if (result < 60) {
        return result;
    } else {
        result.FONTSIZE = 9;
        result.BOLD = true;
        result.FILL = true;
        result.FGCOLOR = 3;
        return result;
    };
    Cdt,
    Un homme bien loin de son domaine de prédilection ^^

  2. #2
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 10
    Par défaut Modification structure date
    J'ai aussi essayé de modifier la structure des dates en YYYY/MM/DD pour pouvoir faire des soustractions mais cela ne donne aucun résultat correct.

  3. #3
    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 : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    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
    function dhm(ms) {
        let days = Math.floor(ms / (24 * 60 * 60 * 1000));
        let daysms = ms % (24 * 60 * 60 * 1000);
        let hours = Math.floor((daysms) / (60 * 60 * 1000));
        let hoursms = ms % (60 * 60 * 1000);
        let minutes = Math.floor((hoursms) / (60 * 1000));
        let minutesms = ms % (60 * 1000);
        let sec = Math.floor((minutesms) / (1000));
        return days + " jours, " + hours + ":" + minutes + ":" + sec;
    }
     
    let date_entrée = new Date("2019-11-10");
    let date_actuelle = new Date();
     
    console.log("différence entre les dates = ", dhm(date_actuelle - date_entrée));

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

  4. #4
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 10
    Par défaut
    Bonjour,
    Merci beaucoup de m'avoir répondu !
    Désolé de te déranger avec ça mais peux-tu m'expliquer ton code
    MERCI EN TOUT CAS!

    Car j'ai en donnée d'entré une date format DD/MM/YYYY et je n'arrive pas à la transformer avec les substring...
    D'avance merci !

  5. #5
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 10
    Par défaut
    Alors après adaptation de votre script dans mon cas d'utilisation, voici le résultat :
    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
    function dhm(ms) {
        let days = Math.floor(ms / (24 * 60 * 60 * 1000));
        let daysms = ms % (24 * 60 * 60 * 1000);
        let hours = Math.floor((daysms) / (60 * 60 * 1000));
        let hoursms = ms % (60 * 60 * 1000);
        let minutes = Math.floor((hoursms) / (60 * 1000));
        let minutesms = ms % (60 * 1000);
        let sec = Math.floor((minutesms) / (1000));
        return days + " jours, " + hours + ":" + minutes + ":" + sec;
    }
    var date_entrée = new Date(#DATE_ENTREE #);
    var date_actuelle = new Date();
    var date1 = #DATE_ENTREE #.substring(6) + '/' + #DATE_ENTREE #.substring(3, 5) + '/' + #DATE_ENTREE #.substring(0, 2);
    var result = dhm(date_actuelle - date1);
    if (result < 60) {
        return result;
    } else {
        return result;
        result.FONTSIZE = 9;
        result.BOLD = true;
        result.FILL = true;
        result.FGCOLOR = 3;
    };
    ll ne fonctionne pas ...

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    visiblement tu ne comprends pas bien ce que tu fais avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var result = dhm(date_actuelle - date1);
    if (result < 60) {
        return result;
    } else {
        return result;
        result.FONTSIZE = 9;
        result.BOLD = true;
        result.FILL = true;
        result.FGCOLOR = 3;
    };
    On constate que :
    • ligne #2 tu compares une chaine, par exemple "13 jours, 16:35:10" avec le nombre 60
    • ligne #5 tu fais un return, le return s'utilise dans une fonction et dans ce cas le code qui suit n'est pas exploité
    • lignes #6 à #9 tu affectes à l'objet result des propriétés aux quelles tu donnes une valeur, je présume que ce n'est absolument pas ce que tu souhaites faire.

    Peux être souhaites tu plutôt changer le style d'un champ de ta page !?!

  7. #7
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 10
    Par défaut
    Merci de ton retour !

    Alors je ne veux pas comparer la "chaine" mais bien le résultat de la soustraction des deux dates qui devrai donner un nombre (écart de jour entre ces deux dates).
    Je vois que c'est pas effectif car il me donne une date actuelle avec avec l'heure et je la compare avec ma variable qui est une date en DD/MM/YYYY.

    Sur ma solution seul le return affiche un résultat.

    Si c'est exactement ce que je veux faire car ces variables détermines la couleurs du result affiché sur ma solution.

    Ma solution est une étiquette numérique sur laquelle je souhaite afficher le compteur de jour et que celui-ci devienne rouge quand le compteur dépasse 60 jours.

    Je suis vraiment naze comme padawan désolé Encore merci !

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Pour pouvoir t'aider efficacement il nous manque le contexte dans lequel est appelée ta fonction et les éléments HTML que tu utilises.

  9. #9
    Membre habitué
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Novembre 2019
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2019
    Messages : 10
    Par défaut Enfin !
    J'ai réussi à faire fonctionner ce script du démon !

    Mon contexte est que je souhaite faire apparaitre un compteur sur des étiquettes digitales (les mêmes que pour les grande surface qui affichent le prix des produit dans les rayons).
    A l’intérieur du logiciel de "Template" de ces étiquettes, on peut insérer des script en JS (la version de JS utilisé n'est indiqué nul part dans les "notices" et le compilateur n'affiche même pas les erreurs effectuées dans le script quand il y en a ....).

    Un compteur qui affiche la différence de jour entre la date d’entrée
    DATE_ENTREE
    et la date actuel.
    Mais que le compteur devienne rouge lorsque ce nombre de jour de différence est supérieur à 60.

    Voici le 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
     
    // Données d'entrées, on stocke la date d'entrée (censée être au format "dd.mm.yyyy")
    var a = #DATE_ENTREE#;
    // On reforme un string au format "yyyy-mm-dd"
    var arr = a.split(".");
    var dd = arr[0];
    var mm = arr[1];
    var yyyy = arr[2];
    var strConcat = yyyy.concat('-',mm,'-',dd);
    // On fait parser la date par l'objet Date
    var dateParsee = Date.parse(strConcat);
    // On initialise un objet date
    var now = new Date();
    var diffDays={value: input};
    var diffTime = Math.abs(now - dateParsee);
    var diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
    var result = {
    	value : diffDays.toFixed(0),
    	BOLD : true
    };
     
    if (diffDays > 60){
    	result.FILL=true;
    	result.FONTSIZE=12;
    	result.FGCOLOR=3;
    }
     
    return(result);

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

Discussions similaires

  1. Date derniere mise à jour - apt
    Par byloute dans le forum Debian
    Réponses: 6
    Dernier message: 09/09/2021, 12h10
  2. [MySQL] Nbre de jours entre deux dates importées depuis la base de données
    Par Devil7 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 02/04/2019, 16h34
  3. Réponses: 1
    Dernier message: 25/11/2005, 11h43
  4. [Dates] comment récupérer le jour de la semaine ?
    Par magic8392 dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2005, 15h01
  5. requette where date="moins de 2 jours"
    Par nmerydem dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/05/2004, 16h58

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