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

Java Discussion :

Déduire les 1er et derniers jours du mois précédent à partir d'une date


Sujet :

Java

  1. #1
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut Déduire les 1er et derniers jours du mois précédent à partir d'une date
    Bonjour,

    j'ai besoin, à partir d'une Date, d'en déduire le premier et le dernier jour du mois précédent.

    Exemple 1:

    Date : 06/08/2009
    1er jour du mois M-1 : 01/07/2009
    dernier jour du mois M-1 : 31/07/2009

    Exemple 2:

    Date : 04/01/2009
    1er jour du mois M-1 : 01/12/2008
    dernier jour du mois M-1 : 31/12/2008

    Pour l'instant, j'ai commencé à développer une solution qui consiste à convertir la date en chaîne de caractère, extraire le mois, retirer 1... Mais pas mal de contraintes apparaissent comme la gestion des années bissextiles pour le mois de février, etc...

    Existerait-il une solution moins barbare à partir des objets Calendar ou autres qui permettrait de faire cela plus aisément ?

    Merci d'avance

  2. #2
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Alors, même si le post précédent a été supprimé, il m'a fait avancé dans le sens où j'arrive à soustraire 1 mois de ma date D. Reste à pouvoir récupérer le premier et le dernier jour du mois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Calendar c = Calendar.getInstance();
    c.setTime(new Date());
    //--- On "retire" un mois à la date
    c.add(Calendar.MONTH, -1);
    Je ne trouve rien dans l'objet Calendar permettant de faire cela. Quelqu'un a un idée ?

  3. #3
    Membre confirmé
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Points : 575
    Points
    575
    Par défaut
    Oui il vaut mieux utiliser Calendar.

    soit une date dayTmp en settant le jour à 1.
    dayTmp.set(dayMonth.getYear(), dayMonth.getMonth(), 1);

    puis dayTmp.add(Calendar.DATE,-1);
    tu récupère le dernier jour du mois précédent.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par danyboy85 Voir le message
    Pour l'instant, j'ai commencé à développer une solution qui consiste à convertir la date en chaîne de caractère, extraire le mois, retirer 1...
    T'es pas sorti de l'auberge

    Citation Envoyé par danyboy85 Voir le message
    Existerait-il une solution moins barbare à partir des objets Calendar ou autres qui permettrait de faire cela plus aisément ?
    Effectivement, utiliser les classes prévues pour la manipulation des dates pourra t'aider


    Exemple inspiré de cette conversation :
    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
    Calendar c = Calendar.getInstance();
     
    // on se place à la date utilisée comme base de calcul
    c.setTime(maDate);
     
    // on se place au premier jour du mois en cours
    c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
    Date debutMois = c.getTime();
     
    // premier jour du mois en cours moins un jour = dernier jour du mois précédent
    c.add(Calendar.DAY_OF_MONTH, -1);
    Date finMoisPrecedent = c.getTime();
     
    // on était au dernier jour du mois précédent, on se place maintenant au premier jour du mois précédent
    c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
    Date debutMoisPrecedent = c.getTime();

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par danyboy85 Voir le message
    Je ne trouve rien dans l'objet Calendar permettant de faire cela. Quelqu'un a un idée ?
    Oui : chercher plus sérieusement

    EDIT : trop lent

  6. #6
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    @Astartee : Ton exemple fonctionne à merveille !

    Merci de votre aide les gens

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 33
    Points : 35
    Points
    35
    Par défaut
    merci, ce petit sujet m'a fait gagner pas mal de temps...

  8. #8
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    4 ans après, jour pour jour, c'est beau

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

Discussions similaires

  1. Connaitre 1er et dernier jour du mois d'une date donnée
    Par kerido dans le forum Général Java
    Réponses: 4
    Dernier message: 14/05/2012, 15h18
  2. Trouver le 1er et dernier jour du mois
    Par Furil dans le forum Langage
    Réponses: 4
    Dernier message: 15/02/2012, 09h55
  3. Requete jusqu'au dernier jour du mois précédent
    Par stephanies_1977 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 06/01/2009, 12h01
  4. Retourner les 1er et dernier jours de l'année
    Par khaoula_14_05 dans le forum Général Java
    Réponses: 2
    Dernier message: 07/05/2008, 17h23
  5. Objet personnel - Calcul 1er et dernier jour du mois
    Par amiral59 dans le forum Deski
    Réponses: 8
    Dernier message: 26/04/2007, 09h42

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