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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import java.util.Vector;
public class DateDifferent{
private static Vector<Date> joursFeries = new Vector<Date>() ;
private static int a,b,c,d,e,f,g,h,i,k,l,m,n,p;
static{
joursFeries.removeAllElements() ;
Calendar c =Calendar.getInstance(TimeZone.getTimeZone("GMT"));
int year = c.get(Calendar.YEAR) ;
// 1er Janvier
c.set(year,0,1,0,0,0) ;
joursFeries.add(c.getTime());
// 1er mai
c.set(year,4,1,0,0,0) ;
joursFeries.add(c.getTime());
// 8 mai
c.set(year,4,8,0,0,0) ;
joursFeries.add(c.getTime());
// 14 juillet
c.set(year,6,14,0,0,0) ;
joursFeries.add(c.getTime());
// 15 aout assomption
c.set(year,7,15,0,0,0) ;
joursFeries.add(c.getTime());
// 1er novembre toussaint
c.set(year,10,1,0,0,0) ;
joursFeries.add(c.getTime());
// 11 novembre
c.set(year,10,11,0,0,0) ;
joursFeries.add(c.getTime());
// 25 decembre noel
c.set(year,25,11,0,0,0) ;
joursFeries.add(c.getTime());
Date dimanchePaques = getDimanchePaques(year);
// lundi de paques
long t = (24*60*60*1000) ;
joursFeries.add(new Date(dimanchePaques.getTime()+ t));
// jeudi de l'ascension
long t2 = 39 * t ;
joursFeries.add(new Date(dimanchePaques.getTime()+ t2));
// lundi de pentecote
long t3 = 50 * t ;
joursFeries.add(new Date(dimanchePaques.getTime()+ t3));
}
private static Date getDimanchePaques(int year)
{
a = year%19;
b = year/100;
c = year%100;
d = b/4;
e = b%4;
f = (b+8)/25;
g = (b-f+1)/3;
h = (19*a+b-d-g+15)%30;
i = c/4;
k = c%4;
l = (32+2*e+2*i-h-k)%7;
m = (a+11*h+22*l)/451;
n = (h+l-7*m+114)/31;
p = (h+l-7*m+114)%31;
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
c.set(c.get(Calendar.YEAR),n-1, p+1,0,0,0);
return c.getTime() ;
}
public static int nbJours(Calendar startDate, Calendar endDate) {
Calendar date = (Calendar) startDate.clone();
int daysBetween = 0;
int day = date.get(Calendar.DAY_OF_WEEK);
while (date.before(endDate)) {
if(day != Calendar.SATURDAY && day != Calendar.SUNDAY && !joursFeries.contains(day))
{daysBetween++;}
date.add(Calendar.DAY_OF_MONTH, 1);
}
return daysBetween;
}
public static void main(String args[]){
Calendar c = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c.set(2011,2,26,0,0,0) ;
c.getTime();
// c.set(2011,5,10,0,0,0) ;
c2.set(2011,2,29,0,0,0) ;
c2.getTime();
// c.set(2011,5,19,0,0,0) ;
int duree = nbJours(c, c2) ;
System.out.println("Duree = "+duree+"j");
}
} |
Partager