Calendar et Juin / Juillet 2014
Fermé
edilecachan
Messages postés
87
Date d'inscription
dimanche 1 janvier 2012
Statut
Membre
Dernière intervention
26 juin 2023
-
Modifié par pijaku le 18/06/2014 à 08:47
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 19 juin 2014 à 18:23
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 19 juin 2014 à 18:23
A voir également:
- Calendar et Juin / Juillet 2014
- Fifa 2014 - Télécharger - Sport
- Word 2014 - Télécharger - Traitement de texte
- Google calendar partagé - Guide
- Darkino nouvelle adresse juin 2024 - Guide
- Telecharger google calendar pour pc - Télécharger - Agendas & Calendriers
3 réponses
Elponito
Messages postés
51
Date d'inscription
vendredi 23 mai 2014
Statut
Membre
Dernière intervention
21 décembre 2015
8
18 juin 2014 à 11:34
18 juin 2014 à 11:34
Bonjour,
Moi je dirais par logique que le problème viens de ton MONTH - 1..
Moi je dirais par logique que le problème viens de ton MONTH - 1..
edilecachan
Messages postés
87
Date d'inscription
dimanche 1 janvier 2012
Statut
Membre
Dernière intervention
26 juin 2023
3
19 juin 2014 à 11:14
19 juin 2014 à 11:14
Bonjour,
Nan, mais, c'est quand même ma fôte ma très grande fôte !!!!!
C'est une erreur de méthode JAVA de la classe Calendar :
- getMaximum donne le nombre maximum de jour d'un mois possible dans une année du calendrier considéré (pour nous, c'est évidement 31 ... , mais, j'ai cru comprendre que Calendar gérait d'autres calendriers où ça ne serait pas le cas),
- dans mon cas, il faut utiliser getActualMaximum qui donne le nombre maximum de jour du mois de la date considérée (en gérant les années bissextiles pour le mois de février).
Du coup, je ne résiste pas à l'envie de vous donner une méthode qui vas vous permettre de calculer des dates d'échéance mensuelle en tenant compte de la notion de "dernier jour du mois".
Ex :
Votre client signe le 28 février 2015.
C'est le dernier jour du mois.
Dans la logique humaine, sa prochaine échéance est le 31 mars pas le 28 mars.
Il ne suffit donc pas de juste ajouter un mois ce qui rendrait cette date du 28 mars.
Il faut tenir compte du nombre de jour du mois de départ et du nombre de jour du mois d'arrivée.
C'est ce que fais cette méthode :
private Calendar AddMois (Calendar cal, int pas) {
Calendar cal_R = Calendar.getInstance ();
cal_R.setTime(cal.getTime());
boolean fin_de_mois = (cal.get(Calendar.DAY_OF_MONTH) == cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal_R.add(Calendar.MONTH, pas);
if (fin_de_mois) {
cal_R.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
}
return cal_R;
}
Nan, mais, c'est quand même ma fôte ma très grande fôte !!!!!
C'est une erreur de méthode JAVA de la classe Calendar :
- getMaximum donne le nombre maximum de jour d'un mois possible dans une année du calendrier considéré (pour nous, c'est évidement 31 ... , mais, j'ai cru comprendre que Calendar gérait d'autres calendriers où ça ne serait pas le cas),
- dans mon cas, il faut utiliser getActualMaximum qui donne le nombre maximum de jour du mois de la date considérée (en gérant les années bissextiles pour le mois de février).
Du coup, je ne résiste pas à l'envie de vous donner une méthode qui vas vous permettre de calculer des dates d'échéance mensuelle en tenant compte de la notion de "dernier jour du mois".
Ex :
Votre client signe le 28 février 2015.
C'est le dernier jour du mois.
Dans la logique humaine, sa prochaine échéance est le 31 mars pas le 28 mars.
Il ne suffit donc pas de juste ajouter un mois ce qui rendrait cette date du 28 mars.
Il faut tenir compte du nombre de jour du mois de départ et du nombre de jour du mois d'arrivée.
C'est ce que fais cette méthode :
private Calendar AddMois (Calendar cal, int pas) {
Calendar cal_R = Calendar.getInstance ();
cal_R.setTime(cal.getTime());
boolean fin_de_mois = (cal.get(Calendar.DAY_OF_MONTH) == cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal_R.add(Calendar.MONTH, pas);
if (fin_de_mois) {
cal_R.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
}
return cal_R;
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 19/06/2014 à 18:28
Modifié par KX le 19/06/2014 à 18:28
Bonjour,
Plus simplement : le dernier jour du mois c'est la veille du premier jour du mois d'après.
Ce qui se simplifie encore :
Plus simplement : le dernier jour du mois c'est la veille du premier jour du mois d'après.
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); // le mois d'après cal.set(Calendar.DAY_OF_MONTH, 1); // le 1er du mois cal.add(Calendar.DAY_OF_MONTH, -1); // la veille
Ce qui se simplifie encore :
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); cal.set(Calendar.DAY_OF_MONTH, 0);La confiance n'exclut pas le contrôle.