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

Angular Discussion :

Observer une date ?


Sujet :

Angular

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Observer une date ?
    Hello ! me revoilà

    A des fins de test, je cherche à déclencher une fonction dans mon appli à un instant précis dans plusieurs onglets. Du coup je suis parti à faire ceci :
    Je définis la date actuelle puis je la soustrais à ma date d'échéance où je veux que mon script se lance...

    J'ai fait un truc tout bête comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ngOnInit() {
        let currentTime = Date.now();
        let timeToLaunch = Date.parse("Wed, 04 August 2021 15:00");
        let go = currentTime - timeToLaunch;
     
        if (go === 0) {
          console.log("toto");
        }
    Par contre il faudrait que j'arrive à observer la variable go pour finaliser ce petit bout de code...
    Est-ce qu'il ya un observable ou autre pour faire ça ?

    Merci !

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2019
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Salut,

    La première idée qui me vient c'est de calculer le temps entre ta date courante et la date de déclenchement. Ensuite de mettre en place un "setTimeOut" et de faire ce que tu veux dedans comme lancer ta fonction ou bien un événement permettant de la déclencher.

    Nom : exemple.PNG
Affichages : 31
Taille : 2,4 Ko

    Bonne journée

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    en effet, tu lances une fonction au bout de x temps... bonne solution

  4. #4
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Ok, mais quid du temps qui s'écoule entre le moment où je rafraichis l'onglet 1 et l'onglet 2 ?
    En fait, je sis stupide, c'est le nombre que je dois observer, vu que c'est la soustraction entre la date courante et la date d'échéance....

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    tu veux dire le temps entre l'onglet 1 et l'onglet 2 ?

    par ex t'es sur l'onglet 1
    tu clique sur l'onglet2
    et une fois dessus, ça t'indique le temps écoulé

    c ça ?

  6. #6
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    je me suis mal exprimé :

    en fait j'ouvre 2 onglets dans lesquels je lance l'appli.

    Dans ces 2 onglets au même moment, je dois déclencherla même fonction.

    Du coup, j'ai voulu faire la soustraction de la date en cours moins la date d'échéance, dès lors j'ai un nombre négatif, qui à un moment vaut strictement 0.
    Mon problème c'est comment observer le résultat de ma soustraction en permanence afin que lorque elle arrive à 0, je déclenche la fonction.

    J'ai peut être mal saisi les posts précédents, mais :
    Si j'utilise un setTimeout(), j'aurais effectivement un décalage entre le temps où je lance mon appli sur l'onglet et et sur l'onglet 2. Par ex, si je mets 0.5 sec entre les 2, j'aurais le compte du setTimeout+ 0.5 sec sur un onglet.

    Du coup j'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    let currentTime = Date.now();
        let timeToLaunch = Date.parse("Wed, 04 August 2021 14:18");
        let go = currentTime - timeToLaunch;
     
        const goObservable = of(go);
        goObservable.subscribe((value) => {
          console.log(value)
          if (value === 0) console.log("toto");
        });
    mais sans succès

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2019
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2019
    Messages : 22
    Points : 5
    Points
    5
    Par défaut
    Si tu as une heure précise pour lancer ta fonction sur tes deux onglets non il n'y a pas de problème avec setTimeOut.
    Exemple si tu veux lancer ta fonction à 15h sur tous tes onglets:
    Cas 1: Tu lances ton premiers onglets à 14h, tu fais la diff entre ta date d'échéance et ta date courante, ca te donne 3600s
    Cas 2 Tu lances ton second onglets a 14h30 ca te fait une différence de 1800s.

    Dans le cas 1 tu règles ton timeout a 360000 et dans le cas 2 tu règles a 180000 et tes deux fonctions vont se lancer à 15h

  8. #8
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Par contre, Je ne saisis pas comment tu peux régler un setTimeout à 3600 dans un 1er cas puis à 1800 dans le 2ème cas (en lançant l'appli sur un 2ème onglet, alors que le 1er timeout est en cours)
    merci en tt cas

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Points : 1 030
    Points
    1 030
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    setTimeout(function(){ alert("Hello"); }, 3600);
    setTimeout(function(){ alert("Hello"); }, 1800);
    j'ai du répondre à coté

    je dois avouer que j'ai un gros défaut, je ne comprends jamais les questions ou explications que se soit à l'écrit ou à l'oral. j'ai des difficultés à comprendre
    je me comprendre que moi même et le code que je fais, mais les autres

  10. #10
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Ahah, je suis pas très clair des fois... Bon en tout cas je vais faire comme ça, mais j'aurais voulu un truc plus précis, car ça se joue en sec (le temps de refresh un onglet, puis l'autre) merci à vous 2 !

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

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 09h41
  2. Récupérer l'année d'une date
    Par delphim dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/01/2003, 16h33
  3. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  4. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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