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 :

Connaitre le dernier jour d'un mois


Sujet :

Langage Java

  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 Connaitre le dernier jour d'un mois
    Bonjour,

    J'aimerai savoir s'il serait possible, à partir d'un mois et d'une année, de connaitre le dernier jour du mois d'avant.

    Je m'explique, est ce qu'il existe une fonction pré-existante qui me permet de savoir que si je passe comme paramètre 11 (pour le mois de novembre) et 2016 (pour l'année), la fonction me renvoie, 31-10-2016 (le dernier jour du mois de novembre 2016) ?

    Si non, auriez vous des pistes pour m'aiguiller ?

    Merci pour tout

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Oui c'est possible, tu prends un mois et une année, puis tu demandes le dernier jour de ce mois:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import java.time.LocalDate;
    import java.time.YearMonth;
     
    int year = 2016, month = 11;
    YearMonth yearMonth = YearMonth.of(year, month);
    LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
    System.out.println(lastDayOfMonth);

    Lien de la Javadoc : LocalDate, YearMonth.

    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gugelhupf Voir le message
    Bonjour,

    Oui c'est possible, tu prends un mois et une année, puis tu demandes le dernier jour de ce mois:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import java.time.LocalDate;
    import java.time.YearMonth;
     
    int year = 2016, month = 11;
    YearMonth yearMonth = YearMonth.of(year, month);
    LocalDate lastDayOfMonth = yearMonth.atEndOfMonth();
    System.out.println(lastDayOfMonth);

    Lien de la Javadoc : LocalDate, YearMonth.

    A+
    Ça ne répond pas à son besoin, elle demande le dernier jour du mois précédent...
    Avec ta solution, il faudra prévoir un ajustement de l'année et du mois pour janvier...

    Solution qui répond au besoin et qui ne nécessite par la version 8 de java
    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
    package test;
     
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
     
    public class DernierJour
    {
        private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        public static void main(String[] args)
        {
            int year = Integer.parseInt(args[0]);
            int month = Integer.parseInt(args[1]);
     
     
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month-1);            <- parce que les mois commencent à 0
            calendar.set(Calendar.DAY_OF_MONTH, 0);       <- astuce avec lenient=true, (ce qui est le cas par défaut)
     
            System.out.println("Dernier jour du mois précédent : " + sdf.format(calendar.getTime()));
     
        }
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    D'accord, mais ça reste plus concis en Java 8 :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int year = 2016, month = 11;
    LocalDate lastDayOfPreviousMonth = LocalDate.of(year, month, 1).minusDays(1);
    System.out.println(lastDayOfPreviousMonth);
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    On peut aussi s'amuser à faire dans le littéral : prendre le mois précédent puis son dernier jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int year = 2016, month = 11;
    LocalDate lastDayOfPreviousMonth = YearMonth.of(year, month).minusMonths(1).atEndOfMonth();
    System.out.println(lastDayOfPreviousMonth);
    Bref, pas les moyens qui manquent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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 infiniment de votre aide. J'ai essayé d'importer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import java.time.LocalDate;
    import java.time.YearMonth;
    mais cela ne fonctionne pas. Je pense que je n'ai pas la version 8 de java mais je n'en suis pas sur. Comment je peux connaitre la version de java que j'utilise ?

    Merci infiniment ?

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu peux utiliser une ligne de commande et taper :
    java -version
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    lorsque je tape la commande j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java-version "1.6.0_20"
    En tout cas, merci du coup de main, la solution que OButterlin m'a proposé fonctionne nickel. Merci infiniment du coup de main

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pour information, Java version 1.7 est obsolète, plus maintenu depuis longtemps, et faire quoi que ce soit avec c'est chercher à devenir victime de failles de sécurité connues et non corrigées puisqu'il suffit de mettre à jour pour éviter ça.

    Et toi, tu utilises la version d'encore avant.

    C'est juste une catastrophe.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Obtenir le dernier jour d'un mois (30,31,bisextile) ?
    Par Ekimasu dans le forum Général Python
    Réponses: 3
    Dernier message: 15/02/2007, 19h26
  2. Réponses: 3
    Dernier message: 06/09/2006, 17h22
  3. Réponses: 26
    Dernier message: 01/07/2006, 13h14
  4. dernier jour d'un mois comme oracle
    Par looc 6699 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/11/2005, 11h09
  5. Comment connaître le dernier jour d'un mois donné ?
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/07/2005, 10h48

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