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 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
import java.util.*;
public class testFerie {
private static class Ferie
{
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;
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;
GregorianCalendar c = new GregorianCalendar() ;
c.set(c.get(Calendar.YEAR),n-1, p+1,0,0,0);
return c.getTime() ;
}
public static void init()
{
joursFeries.removeAllElements() ;
GregorianCalendar c = new GregorianCalendar();
// 1er Janvier
c.set(c.get(Calendar.YEAR),0,1,0,0,0) ;
joursFeries.add(c.getTime());
// 1er mai
c.set(c.get(Calendar.YEAR),4,1,0,0,0) ;
joursFeries.add(c.getTime());
// 8 mai
c.set(c.get(Calendar.YEAR),4,8,0,0,0) ;
joursFeries.add(c.getTime());
// 14 juillet
c.set(c.get(Calendar.YEAR),6,14,0,0,0) ;
joursFeries.add(c.getTime());
// 15 aout assomption
c.set(c.get(Calendar.YEAR),7,15,0,0,0) ;
joursFeries.add(c.getTime());
// 1er novembre toussaint
c.set(c.get(Calendar.YEAR),10,1,0,0,0) ;
joursFeries.add(c.getTime());
// 11 novembre
c.set(c.get(Calendar.YEAR),10,11,0,0,0) ;
joursFeries.add(c.getTime());
// 25 decembre noel
c.set(c.get(Calendar.YEAR),25,11,0,0,0) ;
joursFeries.add(c.getTime());
Date dimanchePaques = getDimanchePaques(c.get(Calendar.YEAR));
// lundi de paques
joursFeries.add(new Date(dimanchePaques.getTime()+(24*60*60*1000)));
// jeudi de l'ascension
joursFeries.add(new Date(dimanchePaques.getTime()+(24*60*60*1000*39)));
// lundi de pentecote
joursFeries.add(new Date(dimanchePaques.getTime()+(24*60*60*1000*50)));
}
public static boolean isFerie(Date date)
{
init() ;
boolean cont = true ;
for(int i=0;i<joursFeries.size() && cont;i++)
if(joursFeries.get(i).toString().equals(date.toString()))
cont = false ;
return !cont ;
}
}
private static boolean isWE(Date date)
{
GregorianCalendar cal = new GregorianCalendar() ;
cal.setFirstDayOfWeek(Calendar.MONDAY) ;
cal.setTime(date) ;
int jour = cal.get(Calendar.DAY_OF_WEEK) ;
return (jour==Calendar.SATURDAY || jour==Calendar.SUNDAY) ;
}
private static int calcul(Date debut, Date fin)
{
int nb = 0;
long finl = fin.getTime() ;
long debutl = debut.getTime() ;
long duree = (finl - debutl) / 1000 / 60 / 60 / 24 ;
System.out.println("duree="+duree) ;
for (long i = 0; i<= duree; i++)
{
Date d = new Date(debut.getTime()+(24*60*60*1000)*i) ;
System.out.print(d+" ; ");
boolean we = isWE(d) ;
boolean ferie = Ferie.isFerie(d) ;
if(!(we||ferie))
{
nb += 1 ;
System.out.println("IN");
}
else
System.out.println("OUT");
}
return nb ;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GregorianCalendar c = new GregorianCalendar();
c.set(2011,2,28,0,0,0) ;
Date debut = c.getTime() ;
c.set(2011,2,28,0,0,0) ;
Date fin = c.getTime() ;
int duree = calcul(debut, fin) ;
System.out.println("Duree = "+duree+"j");
}
} |
Partager