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
| void DatesInterval( TDate date1, TDate date2, int &Y, int&M, int &D )
{
int dMax = (int)date1 ;
int dMin = (int)date2 ;
// inversion des dates (si nécessaire)
if( dMin > dMax )
{
int tmp = dMax ;
dMax = dMin ;
dMin = tmp ;
}
//décodage des dates
unsigned short y1, m1, d1, y2, m2, d2 ;
DecodeDate( dMax, y1, m1 ,d1 );
DecodeDate( dMin, y2, m2 ,d2 );
int dInterval = d1-d2 ;
int mInterval = m1-m2 ;
int yInterval = y1-y2 ;
if( mInterval<0 ) //on a pas une année complète
{
yInterval = yInterval - 1; //on décrémente les années
mInterval = 12 + mInterval ;
}
if( dInterval<0 ) //on a pas un mois complet
{
mInterval = mInterval - 1 ; // on décrémente les mois
m1 = m1 - 1 ;
if( (m1==1)||(m1==3)||(m1==5)||(m1==7)||(m1==8)||(m1==10)||(m1==0) )
dInterval = 31 + dInterval ; //mois de 31 jours
if( (m1==4) || (m1==6) || (m1==9) || (m1==11) )
dInterval = 30 + dInterval ;//mois de 30 jours
if( (m1==2) && IsLeapYear( y1 ) )
dInterval = 29 + dInterval ; //mois de 29 jours
if( (m1==2) && !IsLeapYear( y1 ) )
dInterval = 28 + dInterval ; // mois de 28 jours
}
Y = yInterval ;
M = mInterval ;
D = dInterval ;
} |
Partager