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

Collection et Stream Java Discussion :

[DATE] Différence en heure par rapport à un intervalle d'heure


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut [DATE] Différence en heure par rapport à un intervalle d'heure
    Bonjour,

    J'aimerais réaliser cette opération :

    calculer la différence d'heure entre deux dates, sachant que je dois compter seulement les heures entre 8h-12h et 13-17h.

    Je ne vois pas comment aborder ce probleme, je serais tres reconnaissant a la personne pouvant me donner une piste.


    merci beaucoup !

  2. #2
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Si j'avais à coder cela, je ferais 8h*nombre de jours entre les dates (tu as pas de notion de jour ouvré aussi ?) plus le nombre d'heure restantes ...
    En gros si on suppose l'intervalle [date1,date2]
    je ferais un calendar des deux.
    Avancer cal1 tant que le jour de cal1 est < au jour de cal2, et à chaque fois dans la boucle ajouter 8h.
    Ensuite, le cas d'arrêt où jour de cal1 et jour de cal2 sont identiques il suffit de prendre l'heure des deux et de faire la différence ...

  3. #3
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    Merci beaucoup chtig , c'est exactement ce qe je voulais

  4. #4
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    si quelqu'un a une suggestion , j'ai un p'tit souci dans le nombre de minute qui ressort (ex: pour 8h=480 j'ai 488) et puis j'ai des résultats faux :
    nbHEURE:3.05 Debut:2007-06-05T12:00:00 FIN:2007-06-05T15:00:00
    nbHEURE:7.116667 Debut:2007-06-12T08:00:00 FIN:2007-06-12T15:00:00



    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
    	int diff=0,min=0;
    	double nbJours;
    	int minute=g2.get(GregorianCalendar.MINUTE);
    	while(g2.getTimeInMillis()<=g1.getTimeInMillis()){				
    		//System.out.println(g2.getTime()+"   //  "+g1.getTime());
    		if(g2.get(GregorianCalendar.DATE)==g1.get(GregorianCalendar.DATE) && g2.get(GregorianCalendar.MONTH)==g1.get(GregorianCalendar.MONTH)){
    			for(i=g2.get(GregorianCalendar.HOUR_OF_DAY);i<=g1.get(GregorianCalendar.HOUR_OF_DAY);i++){
    			if((i>=8 && i<12)||(i>=13 && i<17)){
    				for(j=minute;j<=60-minute;j++){
    				min++;
    				minute=0;
    				}
    			}
    		}
    		}
    		else{
    			diff+=8;	
    		}
     
    		g2.add(GregorianCalendar.DATE,+1);	
    	}
    	g2.add(GregorianCalendar.DATE,-1);
    	nbJours=(((float)min/60)/8+(diff)/8);

  5. #5
    Membre éclairé Avatar de Katachana
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2007
    Messages : 755
    Par défaut
    J'ai résolu mon probleme : (si ca peut aider quelqu'un par la suite voàila 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
    	int diff=0,min=0;
    	double nbJours;
    	int minute=g2.get(GregorianCalendar.MINUTE);
    	System.out.println(nom);
    	while(g2.getTimeInMillis()<=g1.getTimeInMillis()){				
    		//System.out.println(g2.getTime()+"   //  "+g1.getTime());
    		if(g2.get(GregorianCalendar.DATE)==g1.get(GregorianCalendar.DATE) && g2.get(GregorianCalendar.MONTH)==g1.get(GregorianCalendar.MONTH)){
    			for(i=g2.get(GregorianCalendar.HOUR_OF_DAY);i<g1.get(GregorianCalendar.HOUR_OF_DAY);i++){
    			if((i>=8 && i<12)||(i>=13 && i<17)){
    				System.out.println("");
    				System.out.println("Heure :"+i);
    				System.out.println("");
    				for(j=minute;j<=59-minute;j++){
    				min++;
    				System.out.print(min);
    				minute=0;
    				}
    			}
    		}
    		}
    		else{
    			diff+=8;	
    		}	
    		g2.add(GregorianCalendar.DATE,+1);	
    	}
    	g2.add(GregorianCalendar.DATE,-1);
    	nbJours=(((float)min/60)/8+(diff)/8);

    les problemes étaient:
    - for(j=minute;j<=59-minute;j++) => 59 au lieu de 60, sinon une minute en trop a chaque heure
    - or(i=g2.get(GregorianCalendar.HOUR_OF_DAY);i<g1.get(GregorianCalendar.HOUR_OF_DAY);i++) , et puis ici il fallait < et non <= dans la deuxieme partie du for pour eviter de faire une boucle en trop

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 27/02/2015, 14h14
  2. liste des heures par step d'une demi heure
    Par Emmanuel Lecoester dans le forum jQuery
    Réponses: 4
    Dernier message: 15/09/2013, 21h34
  3. [PHP 5.0] [Dates] Convertir un age par rapport à la date d'aujourd'hui
    Par mecmec dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2009, 13h04
  4. [Dates] Décalage d'heure par rapport au serveur
    Par Sayrus dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2008, 11h42
  5. Réponses: 2
    Dernier message: 21/03/2007, 16h52

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