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

Bibliothèques & Frameworks Discussion :

Calcul à partir de 2 dates : savoir le nombre de jours qui les séparent [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut Calcul à partir de 2 dates : savoir le nombre de jours qui les séparent
    Bonjour,
    J'essaie de développer une fonction en javascript pour savoir quel est le nombre de jour qui les séparent, et malheureusement je n'y arrive pas.
    Existe 'il une fonction javascript déjà existante ?

    j'ai cherché sur le forum mais je n'ai pas trouvé, et j'espère que j'ai mis au bon endroit ma demande ^^

    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
     
    	function myCallback()  {
    				//gestion de la date de début de la semaine
    			 	var dateDebutVar = dojo.widget.byId("dateDebut").getDate();
    				var dateDebut = new Date(dateDebutVar) ;
    				var jourDebut = dateDebut.getDay() ;
    				var numDebut = dateDebut.getDate();
    				var moisDebut = dateDebut.getMonth(); //Pour avoir le mois de fin
    				var anneeDebut = dateDebut.getFullYear() ;
     
     
    				//Gestion de la date de fin de la semaine
    				var dateFinVar = dojo.widget.byId("dateFin").getDate();
    			    var dateFin = new Date(dateFinVar) ;
    				var jourFin = dateFin.getDay() ;
    				var numFin = dateFin.getDate();
    				var moisFin = dateFin.getMonth(); //Pour avoir le mois de fin
    				var anneeFin = dateFin.getFullYear() ;
     
     
    				if((jourDebut = '0') &&(jourFin = '6')){
    					for(int i = 0 ; i<7 ; i++){
     
    						}
     
     
     
     
    				}
    Avec if((jourDebut = '0') &&(jourFin = '6')) vérifie que la date du début est un lundi et que la date de fin est un dimanche, mais j'aimerai connaitre le nombre de jours qui les sépare

  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
    Bonjour,

    Dans la Faq, peut-être ?

    Comment calculer le nombre de jours entre deux dates ?




    PS : même si le code en question est du JavaScript de base, j'ai déplacé sur le forum Dojo car je ne sais pas si une telle fonctionnalité a été implémentée en Dojo. Losque l'on utilise un framework JavaScript, il est conseillé de l'utiliser pleinement.

  3. #3
    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
    Quoique j'irais jeté un oeil au sujet de dojo.date.difference.

    La méthode est expliquée dans la doc.

  4. #4
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci pour tout

    par contre, je me pose une question (idiote je sais et je m'en excuse ) :
    dojo.date.difference() prend comme paramètre 2 objet de type date.
    Est ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dateDebutVar = dojo.widget.byId("dateDebut").getDate();
    est un objet date ou non ?

  5. #5
    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
    Non, il me semble que getDate() renvoie le jour.
    Par contre, si vous parvenez à faire un getDate() sans générer d'erreur, c'est que vous avez surement un objet Date.
    Comment est construit le champ "dateDebut" ?

  6. #6
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci beaucoup pour votre aide

    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
     
    function initDatetimePicker() {
    	var datepicker = dojo.widget.byId("dateFin");
    	dojo.event.connect(datepicker, "onValueChanged", myCallback );
    }
     
    function myCallback()  {
    	//gestion de la date de début de la semaine
    	var dateDebutVar = dojo.widget.byId("dateDebut").getDate();
    	Date dateDebutAcompare = dojo.widget.byId("dateDebut");
    	var dateDebut = new Date(dateDebutVar) ;
    	var jourDebut = dateDebut.getDay() ;
    	var numDebut = dateDebut.getDate();
    	var moisDebut = dateDebut.getMonth(); //Pour avoir le mois de fin
    	var anneeDebut = dateDebut.getFullYear() ;
     
     
    	alert("dateDebutAcomparer "+dateDebutAcomparer);
     
    	//Gestion de la date de fin de la semaine
    	var dateFinVar = dojo.widget.byId("dateFin").getDate();
    	Date dateFinAcompare = dojo.widget.byId("dateFin");
    	var dateFin = new Date(dateFinVar) ;
    	var jourFin = dateFin.getDay() ;
    	var numFin = dateFin.getDate();
    	var moisFin = dateFin.getMonth(); //Pour avoir le mois de fin
    	var anneeFin = dateFin.getFullYear() ;
     
    	//savoir le nomb de jour qui sépare les 2 dates			
    	int nbJour = dojo.date.difference(dateDebutAcompare,dateFinAcompare);
           alert("nbJour "+nbJour);
    }
     
    dojo.addOnLoad(initDatetimePicker);
    PS : l'alerte pour connaitre le nombre de jour ne s'affiche pas .

  7. #7
    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
    Pareille avec l'autre date et le int.


  8. #8
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Désolée encore de vous embêter mais j'ai pas compris

    Il faut que je fasse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dateDebutAcompare = dojo.widget.byId("dateDebut");
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date dateDebutAcompare = dojo.widget.byId("dateDebut");
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbJour = dojo.date.difference(dateDebutAcompare,dateFinAcompare);
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int nbJour = dojo.date.difference(dateDebutAcompare,dateFinAcompare);
    Mais dans un cas comme dans l'autre, cela ne fonctionne pas

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

    Il n'y a pas de typage proprement dit en JavaScript. Les variables sont déclarées au moyen de var, peu importe le type de valeur qu'elles vont contenir.

    Les avez-vous bien tous changés ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dateDebutAcompare = dojo.widget.byId("dateDebut");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dateFinAcompare = dojo.widget.byId("dateFin");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbJour = dojo.date.difference(dateDebutAcompare,dateFinAcompare);
    Que donne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("dateDebutAcomparer "+dateDebutAcomparer);

  10. #10
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Merci pour tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("dateDebutAcomparer "+dateDebutAcomparer);
    Me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dateDebutAcompare [Widget struts:strutsdatepicker, dateDebut]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert("dateFinAcompare "+dateFinAcompare);
    me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dateFinAcompare [Widget struts:strutsdatepicker, dateFin]

  11. #11
    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
    Si la différence ne donne rien, c'est que le format du Widget struts n'est pas le bon et qu'il faut le retraduire en objet Date.

  12. #12
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var dateDebutVar = dojo.widget.byId("dateDebut").getDate();
    me donne lorsque je fais l'alerte :
    Mon May 14 2012 00:00:00 GMT+0200

    Ce n'est pas une date ?

  13. #13
    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
    On dirait bien que si. Au temps pour moi. C'est le passage par des widget struts qui me perturbent.

  14. #14
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var dateDebutVar = dojo.widget.byId("dateDebut").getDate();
    alert("dateDebutVar "+dateDebutVar);
    Me donne
    dateDebutVar Mon May 28 2012 00:00:00 GMT+0200


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var dateFinVar = dojo.widget.byId("dateFin").getDate();
    alert("dateFinVar "+dateFinVar);
    me donne
    dateFinVar Sun Jun 03 2012 00:00:00 GMT+0200

    Donc normalement ce sont bien des dates.
    Mais je ne comprend pas pourquoi, lorsque je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nbJour = dojo.date.difference(dateDebutVar , dateFinVar);
    alert("nbJour "+nbJour);[/CODE]

    je n'ai pas de message d'erreur


    Surtout que ce que je veux faire, c'est jour connaitre le nombre de jour de différence entre 2 dates.

    En effet, je développe une application de gestion des horaires, et pour cela (en simplifiant au grand max), je dois vérifier que les 2 dates saisies fasse parti de la même semaine, que la date de début soitle lundi et que la date de fin soitle dimanche, et que la différence entre ces 2 dates soit égales à 7 jours u_u'


  15. #15
    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
    L'alerte finale ne donne rien ? Il ne se déclenche pas ?

    Vous avez bien mis ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dojo.require("dojo.date");
    Vous utilisez quelle version de Dojo ?

  16. #16
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    je dois vérifier que les 2 dates saisies fasse parti de la même semaine, que la date de début soitle lundi et que la date de fin soitle dimanche, et que la différence entre ces 2 dates soit égales à 7 jours


    Tu crois pas que demander un numéro de semaine serait plus simple ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  17. #17
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    @ vermine >
    J'utilise struts2-dojo-plugin-2.1.6.jar comme version

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dojo.require("dojo.date");
    Ben je l'ai mis mais peut être que je l'ai mal mis, mais je ne sais pas

    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
    function initDatetimePicker() {
    	var datepicker = dojo.widget.byId("dateFin");
    	dojo.event.connect(datepicker, "onValueChanged", myCallback );
    }
     
    function myCallback()  {
    	//gestion de la date de début de la semaine
    	dojo.require("dojo.date");
    	var dateDebutVar = dojo.widget.byId("dateDebut").getDate();
    	var dateDebutAcompare = dojo.widget.byId("dateDebut");
     
    	var dateDebut = new Date(dateDebutVar) ;
    	var jourDebut = dateDebut.getDay() ;
    	var numDebut = dateDebut.getDate();
    	var moisDebut = dateDebut.getMonth(); //Pour avoir le mois de fin
    	var anneeDebut = dateDebut.getFullYear() ;
     
     
     
    	//Gestion de la date de fin de la semaine
    	var dateFinVar = dojo.widget.byId("dateFin").getDate();
    	var dateFinAcompare = dojo.widget.byId("dateFin");
     
    	var dateFin = new Date(dateFinVar) ;
    	var jourFin = dateFin.getDay() ;
    	var numFin = dateFin.getDate();
    	var moisFin = dateFin.getMonth(); //Pour avoir le mois de fin
    	var anneeFin = dateFin.getFullYear() ;
     
    	alert("dateDebutVar "+dateDebutVar);
    	alert("dateFinVar "+dateFinVar);
    	var nbJour = dojo.date.difference(dateDebutVar , dateFinVar);
            alert("nbJour "+nbJour);
     
    }
     
    dojo.addOnLoad(initDatetimePicker);

    @ Bovino>
    Ben il faut que le lundi et le dimanche soit effectivement dans la même semaine. Comme cela fait déjà un petit moment que je suis dessus, je suis ouverte à toute suggestions.
    Mais comment puis je m'y prendre ?

  18. #18
    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
    Mouais, en passant par un plugin, la version Dojo n'est sans doute pas complète. Bon, tant pis. Ce sera du JavaScript de base alors. Mais attention, la semaine commence le dimanche.

  19. #19
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Dommage, la fonction dojo.date.difference() avait super

    Bon ben s'il y en a que çà intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function dayDiff(d1, d2){
    d1 = d1.getTime() / 86400000;
    d1 = d1-1;
     d2 = d2.getTime() / 86400000;
    return new Number(d2 - d1).toFixed(0);
    }


    J'ai testé de mon coté et cela fonctionne

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

Discussions similaires

  1. [AC-2013] Champ calculé à partir d'une date
    Par tuxdiver dans le forum Modélisation
    Réponses: 13
    Dernier message: 10/02/2016, 16h20
  2. [AC-2010] Calcul date de fin à partir d'une date et un nombre de jour
    Par drakakoo dans le forum Access
    Réponses: 3
    Dernier message: 18/06/2014, 14h35
  3. [AC-2003] Calcul d'une nouvelle date en tenant compte des jours ferie
    Par Phil37 dans le forum VBA Access
    Réponses: 6
    Dernier message: 19/09/2013, 08h11
  4. Réponses: 3
    Dernier message: 28/10/2006, 15h47
  5. [Dates] Soustraire un nombre de jour à une date
    Par lesgars dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 14h43

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