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 :

Soustraire une date d'un élément calendrier


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    Par défaut Soustraire une date d'un élément calendrier
    Bonjour,

    J'ai réussi à créer une fonction qui recopie une date d'une zone calendrier vers une autre zone calendrier. Mais je voudrais en plus soustraire 42 jours à cette date.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <script type="text/javascript">
    function changeVal(){
    document.getElementById("Date debut inscriptions").value=document.getElementById("Date").value;
    }
    </script>

    J'ai essayé de mettre .addDays(-42) derrière value mais cela ne fonctionne pas.

    J'ai une idée mais je ne sais pas comment l'appliquer, je pense qu'il faut avant que je travaille sur une variable plutôt qu'un objet ?

    Merci d'avance de votre aide.

    Marc G.

  2. #2
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    Par défaut
    J'ai essayé cela mais cela ne fonctionne pas :
    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    function dateMoins() {
      var datecomp = document.getElementById("Date").value;
    var dateinscr = document.getElementById("Date").value;
    dateinscr.setDate(datecomp.getDate()-42);
      document.getElementById("Date debut inscriptions").value=dateinscr;
    }
    </script>

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Salut,

    Pour convertir les dates c'est un peu compliquer, essaies d'utiliser moment.js (traduis la page en français si tu n'es pas a l'aise avec l'anglais).

    A toi de chsoir LES METHODES qui te convient.

    Si tu es bloqué quelque part, n'hésite pas de poser tes questions....

  4. #4
    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,
    peut-être devrais-tu commencer par regarder ce que tu peux faire avec un objet Date.

    Tu pourrais, mais c'est peut-être déjà le cas, utiliser des <input type="date">.

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    Salut,

    ptit exemple:

    - choix dans une plage de dates en cliquant;
    - la date que tu veux apparaît dans l'input;

    Code html : 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
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>...</title>
     
    <style>
    ul {overflow:auto;height:200px;width:150px;}
    </style>
    </head>
    <body>
     
    <div id="cadre"></div>
     
    <div>
    	<span>deuxième date (-42 jours) </span>
    	<input type="text" maxlength="10" readonly id="date2" />
    </div>
     
    <script>
    const ul=document.createElement("ul");
    const li=document.createElement("li");
    document.getElementById("cadre").appendChild(ul);
    for(let i=1;i<29;i++){
            const d=new Date(2020,1,i);
            let li2=li.cloneNode();
            li2.textContent=
            new Intl.DateTimeFormat(undefined, {day:"2-digit",month:"2-digit",year:"numeric"}).format(d);
            ul.appendChild(li2);
            li2.addEventListener("click",(e)=>{
                    const d2=new Date(d -(1000*3600*24*42));
                    document.getElementById("date2").value=
                    new Intl.DateTimeFormat(undefined, {day:"2-digit",month:"2-digit",year:"numeric"}).format(d2);
            })
    }
     
    </script>
    </body>
    </html>

  6. #6
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    Par défaut
    Je vais regardé, j'avais espéré plus simple au niveau de la soustraction des jours mais je vais creuser.
    Merci et je ne doute pas que j'aurai d'autres questions

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


    Pour manipuler des dates et avoir confiance dans la validité du résultat, il existe moment.js qui vous à déjà été recommandé au message n° 3 par @Toufik83

    Exemple d'utilisation :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
    <script defer src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/locale/fr.js"></script>

    Code JavaScript : 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
    window.addEventListener('load', ev => {
        // le DOM est construit et la page web est visible
     
        // début code du test
     
        moment.locale('fr');
     
        let ce_jour = moment();
        let ancien_jour = ce_jour.subtract(10, "days");
     
        console.log(ancien_jour.format("DD-MM-YYYY")); // 14-02-2020
     
        // fin code du test
     
    }, {
        capture: false,
        passive: true,
        once: false
    });

    Deuxième exemple d'utilisation :

    Compte à rebours (countdown)

    Troisième exemple d'utilisation :

    Modifier une date en fonction d'une autre date, voir le code JS de l'exemple : https://danielhagnoul.developpez.com/Site/QR20180331-1/

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

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Je ne saurais trop que plussoyer Daniel et Toufik. la librairie moments.js est une garantie pour la manipulation des dates.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    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
    la librairie moments.js est une garantie pour la manipulation des dates
    Bien d'accord sur ce point mais pas toujours nécessaire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p><label>Date réf.</label><input id="date-ref" type="date"></p>
    <p><label>Date fin</label>  <input id="date-fin" type="date"></p>
    et rien de bien complexe avec des <input type="date">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const inputsDate = document.querySelectorAll('input[type="date"');
    const inputRef = inputsDate[0];
    const inputFin = inputsDate[1];
    const ECART = -42;
     
    function calculNewDate() {
      let dateRef = inputRef.valueAsDate;
      let dateNew = new Date(dateRef);
      dateNew.setDate(dateNew.getDate() + ECART);
      inputFin.valueAsDate = dateNew;
    }
    inputRef.addEventListener( "change", calculNewDate);

  10. #10
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    Par défaut
    Merci de toutes ces informations. Je vais regarder pour adapter et je vous tiendrai informés.

    Marc G.

Discussions similaires

  1. [XL-2007] Incrémentation d'une date à partir d'un calendrier
    Par amauri dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/06/2012, 16h44
  2. Soustraire une date de la date du jour
    Par DJ FA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2012, 12h03
  3. Réponses: 0
    Dernier message: 10/06/2008, 16h57
  4. Soustraire une date à la date du jour
    Par matimat2k4 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/10/2007, 16h23
  5. Soustraire une date avec des jours et jours ouvrés
    Par celiaaa dans le forum VBA Access
    Réponses: 5
    Dernier message: 31/05/2007, 22h37

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