Bonjour,
j'utilise la classe calendar pour obtenir la date de la veille et pour calculer un âge...Mais je bloque, alors que je pense que le code est assez logique :
Ce que j'obtient :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 import java.util.Calendar; public class Date { private static Calendar calendrier; public Date(int jour,int mois,int annee) { calendrier=Calendar.getInstance(); calendrier.set(annee,mois,jour); } public static java.util.Date veille() { calendrier.add(Calendar.DATE, -1); return calendrier.getTime(); } public static float age(){ Calendar now = Calendar.getInstance(); // Calendar dob = Calendar.getInstance(); // calendrier.setTime(date); if (calendrier.after(now)) { throw new IllegalArgumentException("Can't be born in the future"); } int mois=1; int year1 = now.get(Calendar.YEAR); int year2 = calendrier.get(Calendar.YEAR); float age = year1 - year2; int month1 = now.get(Calendar.MONTH); int month2 = calendrier.get(Calendar.MONTH); Calendar moisdiff = calendrier; if (month2 > month1) { age--; for ( mois = 1; now.get(Calendar.MONTH)>moisdiff.get(Calendar.MONTH); mois=+1){ calendrier.add(Calendar.MONTH, +1); } } else if (month1 == month2) { int day1 = now.get(Calendar.DAY_OF_MONTH); int day2 = calendrier.get(Calendar.DAY_OF_MONTH); if (day2 > day1) { age--; mois--; if (mois >1){ float valeurmois = Math.round((mois/12)); age+=valeurmois;} } } return age; } public static void main(final String[] args) { Date grey = new Date (14,05,2014); java.util.Date v= veille(); System.out.println(v); float age = age(); System.out.println(age); } }
"Fri Jun 13 14:08:37 CEST 2014 =>une date qui n'est pas la date de la veille mais de la veille du mois précédent ladite date.
0.0" => normalement j'aurais du obtenir 0.2.
Merci de votre aide.
Partager