Calendar et Juin / Juillet 2014
Fermé
edilecachan
Messages postés
86
Date d'inscription
dimanche 1 janvier 2012
Statut
Membre
Dernière intervention
15 avril 2017
-
Modifié par pijaku le 18/06/2014 à 08:47
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 19 juin 2014 à 18:23
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 19 juin 2014 à 18:23
A voir également:
- Calendar et Juin / Juillet 2014
- Fifa 2014 - Télécharger - Sport
- Samia, kevin et jason ont gardé la trace de leurs ventes quotidiennes du mois de juillet 2016. dans la feuille bilan, il manque les résultats de jason. insérez une colonne entre samia et kevin et reportez-y les résultats de jason. quel mot secret apparait en f2 ? - Forum Excel
- Télécharger xforce keygen autocad 2014 gratuit ✓ - Forum Architecture / décoration
- Samia - Forum Internet / Réseaux sociaux
- Google calendar partagé - Guide
3 réponses
Elponito
Messages postés
51
Date d'inscription
vendredi 23 mai 2014
Statut
Membre
Dernière intervention
21 décembre 2015
9
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
86
Date d'inscription
dimanche 1 janvier 2012
Statut
Membre
Dernière intervention
15 avril 2017
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
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
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.