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 :

Ajouter / Soustraire une période à une période


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut Ajouter / Soustraire une période à une période
    Bonjour,

    J'ai besoin de faire des calculs sur des périodes, mais je ne m'en sort pas. Je fais donc appel aux pros.

    J'ai six zones de saisie :
    -Année de début
    -Mois de début
    -Jour de début

    -Année de fin
    -Mois de fin
    -Jour de fin

    et deux radio boutons
    -Ajouter
    -Soustraire

    Je me retrouve donc avec x années, x mois, x jours à ajouter ou soustraire à y années, y mois, y jours.

    Par exemple, j'ai :
    5 ans, 9 mois et 20 jours
    à ajouter ou soustraire à
    4 ans, 5 mois et 17 jours

    ce qui devrait donner : 3750 jours, soit 10 ans 3 mois et 6 jours.

    Quelqu'un a une idée pour mettre tout ça en musique ?

    Merci

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut Haaa les vaches, meeeuuuuh
    Bonjour,

    C't'un peu impossible avec les années bisextiles.

    [Mauvaises_idees.com]
    Bref, je créerai un objet Date avec les informations données (année, mois, jour) sur lequel je ferai un getTime() qui renvoie les millisecondes. J'additionnerai ou soustrairai les deux paquets de millisecondes, puis je redécomposerai le résultat en jour, mois, année.
    [/Mauvaises_idees.com]


    EDIT: Mais non! Il est *** c't'enfant! Il ne faut pas faire un objet Date car je parie que le getTime est basé sur 1900. Dieu qu'il est bête...

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Merci quand même d'avoir essayé de m'aider.

    J'ai réussi à écrire une fonction qui convient à ce que je cherche à faire.

    Si ça intéresse quelqu'un :

    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
     
    function AjoutPeriode()
    	{
    	var NbJours1 = document.frmSaisie.JourDeb.value * 1;
    	var NbMois1 = document.frmSaisie.MoisDeb.value*1 * 30.4375;
    	var NbAns1 = document.frmSaisie.AnDeb.value * 365.25;
    	var nb1 = Math.round(NbJours1 + NbMois1 + NbAns1);
     
    	var NbJours2 = document.frmSaisie.JourFin.value * 1;
    	var NbMois2 = document.frmSaisie.MoisFin.value*1 * 30.4375;
    	var NbAns2 = document.frmSaisie.AnFin.value * 365.25;
    	var nb2 = Math.round(NbJours2 + NbMois2 + NbAns2);
     
    	if (document.frmSaisie.PlusMoins[0].checked)
    		{
    		nb = nb1 + nb2;
    		}
    	else if (document.frmSaisie.PlusMoins[1].checked)
    		{
    		nb = nb1 - nb2;
    		}
     
    	var nbAnnee = Math.floor(nb/365.25);
    	var nbMois = Math.floor(((nb/365.25)-nbAnnee)*12);
    	var nbJour = Math.floor(((((nb/365.25)-nbAnnee)*12)-nbMois)*30.43)+1;
    	document.frmSaisie.DuréeEnJours.value = nb + " jours";
    	document.frmSaisie.DuréeAMJ.value = nbAnnee + "a " + nbMois + "m " + nbJour + "j";
    	}

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 16h57
  2. [AC-2010] ajouter des données d'une requête à une autre
    Par salam2012 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/07/2012, 21h16
  3. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 13h22
  4. Ajouter le résultat d'une requête à une table
    Par Pierre Jean-Pierre dans le forum Requêtes et SQL.
    Réponses: 24
    Dernier message: 02/10/2008, 19h25
  5. ajouter un item d'une liste à une autre liste
    Par zalalus dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/07/2008, 18h04

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