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

Langage Java Discussion :

trouver des dates


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut trouver des dates
    Bonjour,

    J'ai une suite de date comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    19/05/2006 
    22/05/2006
    23/05/2006
    26/05/2006
    29/05/2006
    30/05/2006
    31/05/2006
    Comme vous pouvez le constater, il manque des jours.
    Ma question est simple, existe-t-il un moyen de trouver aisément les jours manquants .??

    Merci pour votre aide

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Citation Envoyé par krolineeee
    Ma question est simple, existe-t-il un moyen de trouver aisément les jours manquants .??
    je dirais ta question est plutot vague ...

    qu'entends tu par trouver les jours manquants ?

    le nombre de jours manquants ?
    les dates manquantes ?
    les jours (de la semaine) manquants ?
    l'écart entre 2 dates ?

    enfin bref ...

  3. #3
    Membre confirmé Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Par défaut
    Ok effectivement j'ai pas assurée sur ce coup.
    Alors pour etre plus précise, les données extraites de la base de donnée me donne la liste de dates suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    19/05/2006 
    22/05/2006
    23/05/2006
    26/05/2006
    29/05/2006
    30/05/2006
    31/05/2006
    Je dois travailler ces données pour retourner les informations suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    19/05/2006 
    20/05/2006
    21/05/2006
    22/05/2006
    23/05/2006
    24/05/2006
    25/05/2006
    26/05/2006
    27/05/2006
    28/05/2006
    29/05/2006
    30/05/2006
    31/05/2006
    En espérant avoir été plus claire...
    Merci

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Aller hop, un petit tour dans le fabuleux mon de la classe calendar:

    Un petit exemple (sors ta javadoc pour le comprendre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SimpleDateFormat sdf = new SimpleDateForma("dd/MM/yyyy");
    Calendar c = Calendar.getInstance();
    c.setDate(sdf.parse("19/05/2006"));
    Pour avoir le 20
    c.add(Calendar.DATE,1);
    System.out.println(sdf.format(c.getTime()));  //imprime 20/05/2006
    à toi de te débrouille avec ça, ça ne devrait pas être d'une atroce difficulté

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Avec des expressions rationnelles:
    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
    String[] t={"19/05/2006","22/05/2006","23/05/2006","26/05/2006","29/05/2006","30/05/2006","31/05/2006"};
     
    ArrayList<Integer> dateManquante=new ArrayList<Integer>();
     
    Pattern p=Pattern.compile("(\\d{2})/(\\d{2})/(\\d{4})");
     
    Matcher m=p.matcher(t[0]);
     
    int previousValue=Integer.parseInt(m.group(1));
    int currentValue=0;
     
    for(int i=1;i<t.length;i++){
     
    	m=p.matcher(t[i]);
     
    	if(m.matches()){
     
    	currentValue=Integer.parseInt(m.group(1));
     
    	while(++previousValue<currentValue){
    	dateManquante.add(previousValue);
    	}
     
    	}
     
    	previousValue=currentValue;
     
    }
     
    System.out.println(dateManquante);
    C'est juste le principe si les jours sont dans le même mois; sinon pour être plus général il faut récupérer le mois et l'année et faire ce type de comparaison avec des "while" imbriqués par exemple.

  6. #6
    Membre éprouvé Avatar de BoudBoulMan
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 100
    Par défaut
    Pourquoi pas faire l'écart en jour en faisant la différence entre les getTime() des 2 dates et de la divisé par 86400000 pour avoir une différence en jour (car il y a 86400000 millisecondes dans un jour) ensuite tu pars de la date la plus ancienne (s'il y a un écart) et tu fais tous les jours qui les sépare puis tu fais l'écart entres les 2 dates suivantes.

    Voilà, si tu voulais ne retourner que les dates manquantes. Mais si tu veux retourner toutes les dates (celles qu'il y a déjà + les manquantes), il y a beaucoup plus simple
    J'utiliserai alors le code de sinok:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SimpleDateFormat sdf = new SimpleDateForma("dd/MM/yyyy");
    Calendar c = Calendar.getInstance();
    c.setDate(sdf.parse("19/05/2006"));
    Pour avoir le 20
    c.add(Calendar.DATE,1);
    System.out.println(sdf.format(c.getTime()));  //imprime 20/05/2006
    Tu retourne toutes les dates à partir de la première date jusqu'à ce que t'arrives à la dernière.

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

Discussions similaires

  1. [XL-2013] Impossible de trouver des date existantes
    Par dmoluc dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/12/2015, 19h02
  2. [XL-2007] trouver les date des dimanche d'un mois donné
    Par Smilossss dans le forum Excel
    Réponses: 10
    Dernier message: 30/04/2013, 17h40
  3. Réponses: 8
    Dernier message: 02/05/2011, 10h41
  4. [SWT] Un bon coin ou trouver des infos pratik
    Par yolepro dans le forum SWT/JFace
    Réponses: 8
    Dernier message: 04/12/2002, 14h08
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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