home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <dos.h>
- #include "date.hpp"
-
- int endmonth[13] = {0,31,59,90,120,151,181,212,243,273,304,334,365};
-
- Date::Date(void) { ; };
-
- Date::Date(int Mon,int Day,int Year)
- {
- da_mon = Mon ;
- da_day = Day ;
- da_year = Year ;
- }
-
- Date::Date(Date& adate)
- {
- da_mon = adate.da_mon ;
- da_day = adate.da_day ;
- da_year = adate.da_year;
- }
-
- /* numberdays - calculates the number of days since 1/1/0000 */
- long Date::numberdays(void)
- {
- long tmp;
-
- /* calcute Days for current year */
- tmp = (long) ((double)da_year*(double)365.25);
- tmp += (long) endmonth[da_mon-1] + ((this->isleap() && da_mon>3) ? 1L : 0L);
- tmp += (long) da_day;
- return(tmp) ;
- }
-
- void Date::readdate(void) {
- int Mon,Day,Year ;
-
- scanf("%d %d %d",&Mon,&Day,&Year) ;
- da_mon=Mon ;
- da_day=Day ;
- da_year=Year ;
- }
-
- void Date::printdate(void) {
- printf("%02d/%02d/%04d",(int)da_mon,(int)da_day,da_year) ;
- }
-
- void Date::daytodate(long days)
- {
- long tmp;
-
- /* calcute Days for current year */
- da_year = (int) ((double)days / (double)365.25);
- tmp = (long) ((double)da_year*(double)365.25);
- days -= tmp;
-
- /* calculate days for current month */
- for(da_mon=1;da_mon<13;da_mon++) {
- if (this->isleap() && da_mon>2) {
- if (days <= (long)endmonth[da_mon]+1L)
- {
- da_day = days - (long)endmonth[da_mon-1] - ((da_mon>3) ? 1L : 0L);
- break;
- }
- } else
- if (days <= (long)endmonth[da_mon])
- {
- da_day = days - (long)endmonth[da_mon-1];
- break;
- };
- } ;
- }
-
- Date Date::addday(long days)
- {
- long start;
- Date tmp;
-
- start = this->numberdays();
- start += days;
- this->daytodate(start);
- return(tmp);
- }
-
-
- Date Date::operator+(Date& Date1)
- {
- Date tmp;
- long start,days;
-
- days = Date1.numberdays();
- start = this->numberdays();
- start += days;
- tmp.daytodate(start);
- return(tmp);
- }
-
- int Date::operator-(Date& adate)
- {
- return(this->numberdays()-adate.numberdays()) ;
- }
-
- int daysbetween( Date& Date1, Date& Date2 )
- {
- return(Date2.numberdays()-Date1.numberdays()) ;
- }
-