AcePerl
view release on metacpan or search on metacpan
acelib/timesubs.c view on Meta::CPAN
struct tm ts1, ts2;
BOOL wantMonth1, wantDay1, wantHours1, wantMins1, wantSecs1;
BOOL wantMonth2, wantDay2, wantHours2, wantMins2, wantSecs2;
double d;
timeStruct (&ts1, t1, &wantMonth1, &wantDay1, &wantHours1, &wantMins1, &wantSecs1) ;
timeStruct (&ts2, t2, &wantMonth2, &wantDay2, &wantHours2, &wantMins2, &wantSecs2) ;
if (!wantMins1 || !wantMins2)
return FALSE ;
ts1.tm_sec = ts2.tm_sec = 0 ;
d = difftime (mktime (&ts2), mktime (&ts1)) ;
d /= 60;
*diff = (int)d ;
return TRUE ;
}
/**********************************************/
BOOL timeDiffHours (mytime_t t1, mytime_t t2, int *diff)
{
struct tm ts1, ts2;
BOOL wantMonth1, wantDay1, wantHours1, wantMins1, wantSecs1;
BOOL wantMonth2, wantDay2, wantHours2, wantMins2, wantSecs2;
double d;
timeStruct (&ts1, t1, &wantMonth1, &wantDay1, &wantHours1, &wantMins1, &wantSecs1) ;
timeStruct (&ts2, t2, &wantMonth2, &wantDay2, &wantHours2, &wantMins2, &wantSecs2) ;
if (!wantHours1 || !wantHours2)
return FALSE ;
ts1.tm_sec = ts2.tm_sec = 0 ;
ts1.tm_min = ts2.tm_min = 0 ;
d = difftime (mktime (&ts2), mktime (&ts1)) ;
d /= (60 * 60);
*diff = (int)d ;
return TRUE ;
}
/**********************************************/
BOOL timeDiffDays (mytime_t t1, mytime_t t2, int *diff)
{
struct tm ts1, ts2;
BOOL wantMonth1, wantDay1, wantHours1, wantMins1, wantSecs1;
BOOL wantMonth2, wantDay2, wantHours2, wantMins2, wantSecs2;
double d ;
timeStruct (&ts1, t1, &wantMonth1, &wantDay1, &wantHours1, &wantMins1, &wantSecs1) ;
timeStruct (&ts2, t2, &wantMonth2, &wantDay2, &wantHours2, &wantMins2, &wantSecs2) ;
if (!wantDay1 || !wantDay2)
return FALSE ;
ts1.tm_sec = ts2.tm_sec = 0 ; /* zero hours:mins:secs so get calendar days */
ts1.tm_min = ts2.tm_min = 0 ;
ts1.tm_hour = ts2.tm_hour = 0 ;
d = difftime (mktime (&ts2), mktime (&ts1)) ;
d /= (24 * 3600) ;
*diff = (int)d ;
return TRUE ;
}
/**********************************************/
BOOL timeDiffMonths (mytime_t t1, mytime_t t2, int *diff)
{
struct tm ts1, ts2;
BOOL wantMonth1, wantDay1, wantHours1, wantMins1, wantSecs1;
BOOL wantMonth2, wantDay2, wantHours2, wantMins2, wantSecs2;
int mdiff;
timeStruct (&ts1, t1, &wantMonth1, &wantDay1, &wantHours1, &wantMins1, &wantSecs1) ;
timeStruct (&ts2, t2, &wantMonth2, &wantDay2, &wantHours2, &wantMins2, &wantSecs2) ;
if (!wantMonth1 || !wantMonth2)
return FALSE ;
mdiff = ts2.tm_mon - ts1.tm_mon ;
*diff = mdiff ;
return TRUE ;
}
/**********************************************/
BOOL timeDiffYears (mytime_t t1, mytime_t t2, int *diff)
/* NOTE: is always true, i.e. every date/time has a year */
{
struct tm ts1, ts2;
BOOL wantMonth1, wantDay1, wantHours1, wantMins1, wantSecs1;
BOOL wantMonth2, wantDay2, wantHours2, wantMins2, wantSecs2;
int yeardiff;
timeStruct (&ts1, t1, &wantMonth1, &wantDay1, &wantHours1, &wantMins1, &wantSecs1) ;
timeStruct (&ts2, t2, &wantMonth2, &wantDay2, &wantHours2, &wantMins2, &wantSecs2) ;
yeardiff = ts2.tm_year - ts1.tm_year ;
*diff = yeardiff ;
return TRUE ;
}
/**********************************************/
/* compare two dates, returns boolean result of comparison depending on operator */
BOOL timeComparison (int op,
mytime_t timeLeft,
mytime_t timeRight)
/* op is the operator and is one of
( run in 1.034 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )