home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / GRLF-C-2.ZIP / GFUNC / DATECOMP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-30  |  2.1 KB  |  92 lines

  1. /*
  2.  * datecomp.c
  3.  * contains: datecomp()
  4.  *
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include "gfuncts.h"
  9.  
  10. /*
  11.  *  int
  12.  * datecomp(t1,t2,diff)
  13.  *
  14.  * ARGUMENT
  15.  *  (struct TIMEDATE *)    t1    -    pointer to first date/time struct
  16.  *  (struct TIMEDATE *)    t2    -    pointer to second to compare with
  17.  *  (int)        diff    -    return days between (1)
  18.  *                    or minutes between (2)
  19.  *
  20.  * DESCRIPTION
  21.  *  Subtract t1 - t2.  Working on basis of day of year, determine the
  22.  *  difference between the two in terms of days or minutes.
  23.  *
  24.  * RETURNS
  25.  *
  26.  *    0  if dates are same,
  27.  *    +n if t1 > t2
  28.  *    -n if t1 < t2
  29.  *
  30.  * AUTHOR
  31.  *   Copyright (C)1987-1990 Greenleaf Software Inc. All Rights Reserved.
  32.  */
  33. int GF_CONV datecomp(t1,t2,diff)
  34. struct TIMEDATE *t1,*t2;
  35. int diff;
  36. {
  37.     int GF_CONV dayofyr();
  38.     int minutes1,minutes2,dayofyr1,dayofyr2;
  39.     struct TIMEDATE tmp,stmp;
  40.  
  41.     if(diff==1) {
  42.         dayofyr1=dayofyr(t1->month,t1->day,t1->year);
  43.         dayofyr2=dayofyr(t2->month,t2->day,t2->year);
  44.         if(t1->year != t2->year) {
  45.             stmp.month=1;
  46.             stmp.day=1;
  47.             tmp.month=12;
  48.             tmp.day=31;
  49.             if(t1->year>t2->year) {    /* Bring t2 up to t1 */
  50.                 tmp.year=t2->year;
  51.                 dayofyr2 = datecomp(&tmp,t2,1);
  52.                         /* Days remaining in year */
  53.                 ++tmp.year;
  54.                 while(tmp.year < t1->year) {
  55.                     stmp.year=tmp.year;
  56.                     dayofyr2 += datecomp(&tmp,&stmp,1);
  57.                     ++tmp.year;
  58.                 }
  59.                 return(dayofyr2+dayofyr1);
  60.             } else {        /* Bring t1 up to t2 */
  61.                 tmp.year=t1->year;
  62.                 dayofyr1=datecomp(&tmp,t1,1);
  63.                         /* Days remaining in year */
  64.                 ++tmp.year;
  65.                 while(tmp.year < t2->year) {
  66.                     stmp.year=tmp.year;
  67.                     dayofyr1 += datecomp(&tmp,&stmp,1);
  68.                     ++tmp.year;
  69.                 }
  70.                 return((dayofyr2+dayofyr1) * -1);
  71.             }
  72.         }
  73.         if(dayofyr1==dayofyr2)
  74.             return(0);
  75.         if(dayofyr1 > dayofyr2)
  76.             return(dayofyr1 - dayofyr2);
  77.         else
  78.             return((dayofyr2 - dayofyr1) * -1);
  79.     }
  80.     if(diff==2) {
  81.         minutes1=t1->hours * 60 + t1->minutes;
  82.         minutes2=t2->hours * 60 + t2->minutes;
  83.         if(minutes1==minutes2)
  84.             return(0);
  85.         if(minutes1>minutes2)
  86.             return(minutes1-minutes2);
  87.         else
  88.             return((minutes2-minutes1) * -1);
  89.     }
  90.     return(0);
  91. }
  92.