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 :

[debutant] Intervalles de dates


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut [debutant] Intervalles de dates
    Bonjour,

    j'ai un petit pb que je n'arrive pas a resoudre a propos des dates. je pense pourtant ke cela ne doit pas etre tres compliqué et que surement des personnes ont deja posé. Cependant je n'ai pas retrouvé cela sur le forum.

    Donc voila mon pb:

    je reccupere la date du jour, et si celle ci se trouve

    -entre le 1er du mois et le 10, je dois creer 2 dates : une au 1er et l'autre au 10 du meme mois

    -entre le 11 et 20 : 11 et 20 du meme mois

    -entre le 21 et fin du mois : 21 et fin du mois

    voila je n'arrive pas a faire cela. Si vous aviez une solution et si possible avec des methodes qui ne sont pas deprecated, cela m'aiderait bcp.

    merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 220
    Points : 88
    Points
    88
    Par défaut
    tu sort le jour de ta date et ensuite tu fais un switch avec comme condition ton nombre >1 et <10 et ainsi de suite pour le reste

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    euh c plus les methodes pour reccuperer et changer une date qu'il me faudrait...
    voici ce que j'avais fait et qui ne marche 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
    Date date = new Date();
    GregorianCalendar calendrier = new GregorianCalendar();
    calendrier.setGregorianChange(date);
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
     
    if (date.getDate() > 20) {
    //passer le 21eme jour du mois
     calendrier.set(calendrier.DAY_OF_MONTH, 21);
    Date dateDeb = new Date(format.format(calendrier.getTime()));
     
    //passer au dernier jour du mois
    calendrier.set(calendrier.DAY_OF_MONTH, 1);
    calendrier.set(calendrier.MONTH, calendrier.MONTH + 1);
    calendrier.add(calendrier.DAY_OF_MONTH, -1);
    Date dateFin = new Date(format.format(calendrier.getTime()));
     
    } else if (date.getDate() > 10) {
    //passer le 11eme jour du mois
    calendrier.set(calendrier.DAY_OF_MONTH, 11);
    Date dateDeb = new Date(format.format(calendrier.getTime()));
     
    //passer au 20eme jour du mois
    calendrier.set(calendrier.DAY_OF_MONTH, 20);
    Date dateFin = new Date(format.format(calendrier.getTime()));
     
    } else {
    //passer le 1er jour du mois
    calendrier.set(calendrier.DAY_OF_MONTH, 1);
    Date dateDeb = new Date(format.format(calendrier.getTime()));
     
    //passer au 10eme jour du mois
    calendrier.set(calendrier.DAY_OF_MONTH, 10);
    Date dateFin = new Date(format.format(calendrier.getTime()));
    }

  4. #4
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut Re: [debutant] [Date]
    Citation Envoyé par dormouse
    Bonjour,

    j'ai un petit pb que je n'arrive pas a resoudre a propos des dates. je pense pourtant ke cela ne doit pas etre tres compliqué et que surement des personnes ont deja posé. Cependant je n'ai pas retrouvé cela sur le forum.

    Donc voila mon pb:

    je reccupere la date du jour, et si celle ci se trouve

    -entre le 1er du mois et le 10, je dois creer 2 dates : une au 1er et l'autre au 10 du meme mois

    -entre le 11 et 20 : 11 et 20 du meme mois

    -entre le 21 et fin du mois : 21 et fin du mois

    voila je n'arrive pas a faire cela. Si vous aviez une solution et si possible avec des methodes qui ne sont pas deprecated, cela m'aiderait bcp.

    merci d'avance
    Bonjour,

    Pour gérer les Dates, il faut en fait utiliser la classe Calendar et ses sous-classes qui contient tout ce qu'il faut pour faire ce que tu veux.

    Tout d'abord pour avoir la date du jour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Calendar calendrier = Calendar.getInstance();
    Calendar est en effet une classe abstraite, donc tu ne peux pas l'instancier directement, il faut passer par une méthode "factory" qui fait appel à une sous classe concrète de Calendar. Sinon tu peux utiliser la sous classe concrète de Calendar : GregorianCalendar.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GregorianCalendar calendrier = new GregorianCalendar();
    Ensuite pour récupérer le jour de la date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int jour = calendrier.get(Calendar.DATE);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int jour = calendrier.get(GregorianCalendar.DATE);
    suivant ce que tu as utilisé.

    Après ça tu fait tes tests qui vont bien pour savoir dans quel intervalles tu es :

    Après ça tu créer tu calendrier à la date voulue en utilisant le constructeur de GregorianCalendar suivant : GregorianCalendar(int year, int month, int dayOfMonth)

    Par exemple pour le premier du mois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GregorianCalendar premierDuMois = new GregorianCalendar (1, calendrier.get(GregorianCalendar.MONTH), calendrier.get(GregorianCalendar.MONTH));
    A noter aussi que tu peux convertir un Calendar et un GregorianCalendar en Date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Date d = calendrier.getTime();
    Sinon je te renvoie à la Javadoc pour Calendar et GregorianCalendar.

  5. #5
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Visiblement, tu as déjà été voir les GregorianCalendar, au temps pour moi.

    Peux-tu préciser ce qui ne marche pas (et utiliser les balises [code] pour formatter le code que tu poste)?

  6. #6
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
        public static void main(String[] args) {
            ArrayList dates = new ArrayList();
     
            dates.add(java.sql.Date.valueOf("2006-02-01"));
            dates.add(java.sql.Date.valueOf("2006-02-05"));
            dates.add(java.sql.Date.valueOf("2006-02-10"));
            dates.add(java.sql.Date.valueOf("2006-02-11"));
            dates.add(java.sql.Date.valueOf("2006-02-15"));
            dates.add(java.sql.Date.valueOf("2006-02-20"));
            dates.add(java.sql.Date.valueOf("2006-02-21"));
            dates.add(java.sql.Date.valueOf("2006-02-25"));
            dates.add(java.sql.Date.valueOf("2006-02-28"));
            dates.add(java.sql.Date.valueOf("2006-03-30"));    
     
     
            Iterator i = dates.iterator();
            Date d = null;
            Map m = null;
            while (i.hasNext()){
                d = (Date) i.next();
                System.out.println("date entrée : "+ d);
                m = getDates(d);
                System.out.println("date 1 : "+ m.get("date1"));
                System.out.println("date 2 : "+ m.get("date2"));
                System.out.println("-------------------------");
            }
     
     
        }
     
        public static Map getDates(Date date){
            HashMap result = new HashMap();
     
            Calendar cal = new GregorianCalendar();
            cal.setTime(date);
     
            if (cal.get(Calendar.DAY_OF_MONTH) < 11){
                cal.set(Calendar.DAY_OF_MONTH, 1);
                result.put("date1", cal.getTime());
                cal.set(Calendar.DAY_OF_MONTH, 10);
                result.put("date2", cal.getTime());
            } else if (cal.get(Calendar.DAY_OF_MONTH) < 21){
                cal.set(Calendar.DAY_OF_MONTH, 11);
                result.put("date1", cal.getTime());
                cal.set(Calendar.DAY_OF_MONTH, 20);
                result.put("date2", cal.getTime());
            } else {
                cal.set(Calendar.DAY_OF_MONTH, 21);
                result.put("date1", cal.getTime());
                cal.set(Calendar.DAY_OF_MONTH, 1);
                cal.add(Calendar.MONTH, 1);
                cal.add(Calendar.DATE, -1);
                result.put("date2", cal.getTime());
            }
     
            return result;
        }

  7. #7
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    Citation Envoyé par dormouse
    calendrier.setGregorianChange(date);
    public void setGregorianChange(Date date)

    Sets the GregorianCalendar change date. This is the point when the switch from Julian dates to Gregorian dates occurred. Default is October 15, 1582. Previous to this, dates will be in the Julian calendar.
    c'est ca que tu voulais faire je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calendrier.setTime(date);

  8. #8
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    @ dormouse

    En voyant ton code, je vois un truc pas clair.

    Pourquoi utilise tu un DateFormat pour passer d'un GregorianCalendar à Date?

    Il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Date dateFin = calendrier.getTime();

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    merci a tous j'ai reussi grace a vous
    voici 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
    GregorianCalendar calendrier = new GregorianCalendar();
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
     
    if (calendrier.get(Calendar.DAY_OF_MONTH) < 11) {
    calendrier.set(Calendar.DAY_OF_MONTH, 1);
    Date dateDeb = new Date(format.format(calendrier.getTime()));
     
    calendrier.set(Calendar.DAY_OF_MONTH, 10);
    Date dateFin = new Date(format.format(calendrier.getTime()));
     
    } else if (calendrier.get(Calendar.DAY_OF_MONTH) < 21) {
    calendrier.set(Calendar.DAY_OF_MONTH, 11);
    Date dateDeb = new Date(format.format(calendrier.getTime()));
     
    calendrier.set(Calendar.DAY_OF_MONTH, 20);
     Date dateFin = new Date(format.format(calendrier.getTime()));
     
    } else {
    calendrier.set(Calendar.DAY_OF_MONTH, 21);
    Date dateDeb = new Date(format.format(calendrier.getTime()));
     
     
    calendrier.set(Calendar.DAY_OF_MONTH, 1);
    calendrier.add(Calendar.MONTH, 1);
    calendrier.add(Calendar.DATE, -1);
    Date dateFin = new Date(format.format(calendrier.getTime()));
    }
    En ce qui concerne le SimpleDateFormat c'est parce que j'ai besoin de la date en String.

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 27
    Points : 13
    Points
    13
    Par défaut
    ok jy penserais la prochaine fois

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

Discussions similaires

  1. [debutant] verifier validité date
    Par tony_big_guy dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/06/2006, 15h07
  2. [DEBUTANT]Comparaison sur date et heure
    Par tripper.dim dans le forum Oracle
    Réponses: 15
    Dernier message: 15/11/2005, 18h25
  3. Intervalle de Dates
    Par Philofish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 06/09/2005, 11h02
  4. [Debutant] Format des dates ?
    Par Invité dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 14h55
  5. selection intervalle de dates
    Par jax69 dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2005, 13h58

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