Example #1
0
int minus(dt d1, dt d2)
{
    int d1_l = leap(d1.year), d2_l = leap(d2.year);
    int y, m;
    int total_days = 0;
    int total_days_2 = 0;
    print_dt(d1);
    print_dt(d2);
    for (y = d1.year; y >= d2.year ; y--) {
        if (y == d1.year) {
            for (m = d1.month ; m >= 1 ; m--) {
                if (m == d1.month)  total_days += d1.day;
                else                total_days += daysPerMonth[leap(y)][m];
                // printf("%d - %5s - %d - %d \n", y, month[m], daysPerMonth[leap(y)][m], total_days);
            }
        } else {
            for (m = 12 ; m >= 1 ; m--) {
                total_days += daysPerMonth[leap(y)][m];
                // printf("%d - %5s - %d - %d \n", y, month[m], daysPerMonth[leap(y)][m], total_days);
            }
        }
        if (y == d2.year) {
            for (m = d2.month ; m >= 1 ; m--) {
                if (m == d2.month)  total_days_2 += d2.day;
                else                total_days_2 += daysPerMonth[leap(y)][m];
                // printf("%d - %5s - %d - %d \n", y, month[m], daysPerMonth[leap(y)][m], total_days);
            }
        } 

    }
    printf("\n Totaldays:%d Totaldays_2:%d\n",total_days,total_days_2);
    return total_days - total_days_2;
}
Example #2
0
int main()
{
   int i,j,k,d,m,imp,first=1;

   gets(s);
   sscanf(s,"%d",&year);
   gets(s);
   l=0;
   while(s[0]=='A') {
      sscanf(s,"A %d %d %d%n",&d,&m,&list[l].w,&i);
      while(s[i]==' ') i++;
      strcpy(list[l].s,s+i);
      j=days[m-1]+d;
      if(m>=3 && leap(year)) j++;
      list[l].d=d;
      list[l].m=m;
      list[l].days=j;
      list[l].p=l;
      l++;
      gets(s);
   }
   while(s[0]=='D') {
      sscanf(s,"D %d %d",&d,&m);
      j=days[m-1]+d;
      if(m>=3 && leap(year)) j++;
      if(!first) printf("\n");
      else first=0;
      printf("Today is: %2d %2d\n",d,m);
      k=0;
      for(i=0;i<l;i++) {
         m=list[i].days;
         if(m<j) {
            m+=365+leap(year);
         }
         if(j<=m && j>=m-list[i].w) {
            e[k]=list[i];
            e[k].days=m;
            if(j==m) e[k].imp=10;
            else e[k].imp=e[k].w-m+j+1;
            k++;
         }
      }
      qsort(e,k,sizeof(e[0]),compevent);
      for(i=0;i<k;i++) {
         printf(" %2d %2d ",e[i].d,e[i].m);
         imp=e[i].imp;
         if(imp==10) printf("*TODAY* ");
         else if(imp==7) printf("******* ");
         else if(imp==6) printf("******  ");
         else if(imp==5) printf("*****   ");
         else if(imp==4) printf("****    ");
         else if(imp==3) printf("***     ");
         else if(imp==2) printf("**      ");
         else if(imp==1) printf("*       ");
         else printf("ERROR%2d ",imp);
         printf("%s\n",e[i].s);
      }
      gets(s);
   }
}
Example #3
0
int main(){
    int d,dd,m,mm,yy,dif;
    while(scanf("%d%d%d%d",&d,&dd,&mm,&yy)==4){
        if(!d && !dd && !mm && !yy) break;
        mm--;

            if(mm==1 && leap(yy)){
                dif=29-dd;
                if(dif<=d){d-=dif; dd=29;}
            }
            else{
                dif=month[mm]-dd;
                if(dif<=d){d-=dif; dd=month[mm];}
            }
        //printf("d=%d\n",d);
        while(d>=28){
            mm=(mm+1)%12;
            if(mm==1){
                if(leap(yy)){
                    d-=29;
                    dd=29;
                }
                else{
                    d-=28;
                    dd=28;
                }
            }
            else{
                    d-=month[mm];
                    dd=month[mm];
            }
            if(mm==0) yy++;
            //printf("d=%d\n",d);
        }
        if(mm==1 && leap(yy)){
            m=mm;
            if(dd+d>29){
                m=mm;
                m=(m+1)%12;
                if(m==0) yy++;
            }
            dd=(dd+d)%29;
            mm=m;
            if(dd==0) dd=29;
        }else{
            m=mm;
            if(dd+d>month[mm]){
                m=mm;
                m=(m+1)%12;
                if(m==0) yy++;
            }
            dd=(dd+d)%month[mm];
            mm=m;
            if(dd==0) dd=month[mm];
        }
        printf("%d %d %d\n",dd,mm+1,yy);
    }
    return 0;
}
Example #4
0
void CalendarDatePrivate::ComputeDays() {
    gint month = 1;
    gint year = 1970;
    gint ndays_in_month = 31;
    gint ndays_in_prevmonth = 31;
    gint first_day = 4;
    gint row = 0;
    gint col = 0;
    gint day = 1;

    year = m_selectedYear;
    month = m_selectedMonth;

    ndays_in_month = month_length[leap(year)][month];

    first_day = dayOfWeek(year, month, 1);
    first_day = (first_day + 7 - m_weekStart) % 7;
    if (0 == first_day) {
        first_day = 7;
    }

    if (1 < month) {
        ndays_in_prevmonth = month_length[leap(year)][month - 1];
    } else {
        ndays_in_prevmonth = month_length[leap(year - 1)][12];
    }

    day = ndays_in_prevmonth - first_day + 1;
    for (col = 0; col < first_day; ++col) {
        m_day[0][col] = day;
        m_dayMonth[0][col] = MONTH_PREV;
        ++day;
    }

    row = first_day / 7;
    col = first_day % 7;
    for (day = 1; day <= ndays_in_month; ++day) {
        m_day[row][col] = day;
        m_dayMonth[row][col] = MONTH_CURRENT;

        ++col;
        if (7 == col) {
            ++row;
            col = 0;
        }
    }

    day = 1;
    for (; row <= 5; ++row) {
        for (; col <= 6; ++col) {
            m_day[row][col] = day;
            m_dayMonth[row][col] = MONTH_NEXT;
            ++day;
        }
        col = 0;
    }
}
Example #5
0
struct tm * gmtime(const time_t *time)
{
    time_t t = *time;

    // find days since the unix epoch
    int days = t / (H_PER_DAY * M_PER_HOUR * S_PER_MIN);
    t = t - (days*H_PER_DAY * M_PER_HOUR * S_PER_MIN);
    __localtime.tm_hour = t / (M_PER_HOUR * S_PER_MIN);
    t = t - (__localtime.tm_hour * M_PER_HOUR * S_PER_MIN);
    __localtime.tm_min =  t / S_PER_MIN;
    __localtime.tm_sec = t - (__localtime.tm_min * S_PER_MIN);


    int d = days;
    unsigned int year = 1900;
    __localtime.tm_year = 1970-1900;
    int ndays;
    while(d > 0)
    {
        ndays = leap(year) ? 366 : 365;
        d -= ndays;
        if(d > 0)
        {
            __localtime.tm_year++;
            year++;
        }
        else
            __localtime.tm_yday = ndays + d;
    }

    d = __localtime.tm_yday;
    int m = 0;
    int leapday = leap(year) ? 1 : 0;
    while(d > 0)
    {
        d -= __monthdays[m];
        if(m == 1)
            d -= leapday;

        if(d > 0)
            m++;
        else
        {
            __localtime.tm_mday = __monthdays[m] + d + 1;
            if(m == 1)
                __localtime.tm_mday = leapday;
        }
    }
    __localtime.tm_mon = m;

    // 01/01/1970 was a thursday
    __localtime.tm_wday = (days + 4) % 7;

    return &__localtime;
}
int delta_day(int startYear,int startMonth,int startDay,int endYear,int endMonth,int endDay)
{

	long deltadate,year, day1, day2; 
	if ( startYear < endYear ) 
	{ 
		deltadate = count_day ( startYear, startMonth, startDay , 0 ); 
		for (year=startYear+1;year<endYear; year++ )//年份累加
			if (leap(year))//遇到闰年
				deltadate += 366; 
			else   //平年
				deltadate += 365; 
		deltadate += count_day (endYear, endMonth, endDay, 1); 

	} 
	//同一年的时间判断
	else if ( startYear == endYear ) 
	{ 
		day1 = count_day ( startYear, startMonth, startDay, 1 ); 
		day2 = count_day ( endYear, endMonth, endDay, 1 ); 
		deltadate = day2-day1;//多的被减出来了
	} 
	else
		deltadate = -1; //标识
	return deltadate;
}
Example #7
0
int student::dton(student &d)
{
	int y,m,days=0;
	for(y=1;y<=d.year;y++)
		if(leap(y))
			days+=366;
		else
			days+=365;
	for(m=0;m<d.month-1;m++)
		if(leap(d.year))
			days+=day_tab[1][m];
		else
			days+=day_tab[0][m];
	days+=d.day;
	return days;
}
Example #8
0
int no_days(int mon, int y)
{
 int d;
 switch(mon)
 {
  case 1 :
  case 3 :
  case 5 :
  case 7 :
  case 8 :
  case 10:
  case 12: d=31;
		break;
  case 4 :
  case 6 :
  case 9 :
  case 11: d=30;
		break;
  case 2 : if(leap(y))
		 d=29;
		else
		 d=28;
		break;
 }
 return d;
}
int main()
{
	int leap(int a);
	int a,b,c,d=0;
	while(scanf("%d/%d/%d",&a,&b,&c)!=EOF)
	{
		if(b>2)
			if(leap(a)==1)d=d+29;
			else d=d+28;
		switch(b)
		{
			case 2:
			case 3:d=d+31;break;
			case 4:d=d+62;break;
			case 5:d=d+92;break;
			case 6:d=d+123;break;
			case 7:d=d+153;break;
			case 8:d=d+184;break;
			case 9:d=d+215;break;
			case 10:d=d+245;break;
			case 11:d=d+276;break;
			case 12:d=d+306;break;
		}
		d=d+c;
		printf("%d\n",d);
		d=0;	
    }
    return 0;
}
Example #10
0
struct day* nextDay(struct day* current){
   struct day* next = malloc(sizeof(struct day));
   next->day = current->day + 1;
   next->month = current->month;
   next->year = current->year;
   next->isLeap = current->isLeap;
   
   if ((next->day == 32 && next->month == 1) ||
      (next->day == 29 && next->month == 2 && next->isLeap == false) ||
      (next->day == 30 && next->month == 2) ||
      (next->day == 32 && next->month == 3) ||
      (next->day == 31 && next->month == 4) ||
      (next->day == 32 && next->month == 5) ||
      (next->day == 31 && next->month == 6) ||
      (next->day == 32 && next->month == 7) ||
      (next->day == 32 && next->month == 8) ||
      (next->day == 31 && next->month == 9) ||
      (next->day == 32 && next->month == 10) ||
      (next->day == 31 && next->month == 11)) {
      next->day = 1;
      next->month++;    
   } else if (next->day == 32 && next->month == 12) {
      next->day = 1;
      next->month = 1;
      next->year++;
      next->isLeap = leap(next->year);
   }
   free(current);
   return next;
}
Example #11
0
/**
 * Returns the difference in seconds between the given GMT time
 * and 1970-01-01 00:00:00 GMT.
 *
 * \param year the year (since 1970)
 * \param month the month (1 - 12)
 * \param day the day (1 - 31)
 * \param hour the hour (0 - 23)
 * \param minute the minute (0 - 59)
 * \param second the second (0 - 59)
 *
 * \return the difference in seconds between the given GMT time
 *         and 1970-01-01 00:00:00 GMT.
 */
static int64_t mkgmtime(
        uint32_t year, uint32_t month, uint32_t day,
        uint32_t hour, uint32_t minute, uint32_t second)
{
    int64_t result;

    /*
     * FIXME: It does not check whether the specified days
     *        is valid based on the specified months.
     */
    assert(year >= 1970
            && month > 0 && month <= 12
            && day > 0 && day <= 31
            && hour < 24 && minute < 60
            && second < 60);

    /* Set 'day' to the number of days into the year. */
    day += ydays[month - 1] + (month > 2 && leap (year)) - 1;

    /* Now calculate 'day' to the number of days since Jan 1, 1970. */
    day = day + 365 * (year - 1970) + nleap(year);

    int64_mul(result, int64_const(day), int64_const(SECONDS_PER_DAY));
    int64_add(result, result, int64_const(
        SECONDS_PER_HOUR * hour + SECONDS_PER_MINUTE * minute + second));

    return result;
}
int Month(int y, int m)
{
    int ret = md[m-1]*24*60*60;
    if (leap(y) && m==2) ret += 24*60*60;
    if ((y%10==5 || y%10==8) && m==12) ++ret;
    return ret;
}
int Year(int y)
{
    int ret = 365*24*60*60;
    if (leap(y)) ret += 24*60*60;
    if (y%10==5 || y%10==8) ++ret;
    return ret;
}
Example #14
0
void travel(n) {
  int i, j, d = 5;
  for (i = 0; i < n; i++) {
    for (j = 0; j < 12; j++){
      days[((d=(d+month[j]+leap(i,j))%7)+13)%7]+=1; 
    }
  }
}
Example #15
0
long diffdate (struct date *d1,struct date *d2)
/***********
* Describe : вычисляет пpомежуток между двумя датами в днях
* Params   : struct date *d1 - пеpвая дата
*          : struct date *d2 - втоpая дата
* Return   : long            - число дней от d1 до d2
* Call     :
***********/
{
 int i;
 long days=0;

 days += (DAYS_IN_YEAR+leap(d1->da_year))*(d1->da_year!=d2->da_year) - day_of_year(d1);
 for (i=d1->da_year+1;i<d2->da_year;i++)
  days += DAYS_IN_YEAR + leap(i);
 days += day_of_year(d2);
 return days;
}
Example #16
0
student student::ntod(int n)
{
	int y=1,m=1,d,rest=n,lp;
	while(1)
	{
		if(leap(y))
		{
			if(rest<=366)
				break;
			else
				rest-=366;
		}
		else
		{
			if(rest<=365)
				break;
			else
				rest-=365;
		}
		y++;
	}
	y--;
	lp=leap(y);
	while(1)
	{
		if(lp)
		{
			if(rest>day_tab[1][m-1])
				rest-=day_tab[1][m-1];
			else
				break;
		}
		else
		{
			if(rest>day_tab[0][m-1])
				rest-=day_tab[0][m-1];
			else
				break;
		}
		m++;
	}
	d=rest;
	return student(y,m,d);
}
Example #17
0
 void next()
 {
    int p=c[m];
    if (m==2 && leap())
       p++;
    d++;
    if (d>p)
       m++,d=1;
    if (m>12)
       y++,m=1;
 }
Example #18
0
/* 1990年から何日か調べる */
int cal(int year, int month, int day) {
    int num[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int ans = 0, i, j;

    for(i = 1900; i < year; i++) {
        for(j = 1; j <= 12; j++)
            ans += num[j - 1];
        ans += leap(i);
    }

    for(j = 1; j < month; j++) {
        ans += num[j - 1];
        if(j == 2)
            ans += leap(i);
    }

    ans += day - 1;

    return ans;
}
Example #19
0
void full_date (int day,struct date *d)
/***********
* Describe : вычисляет день и месяц по номеpу дня в году
* Params   : int day        - номеp дня в году
*          : struct date *d - в стpуктуpе содеpжится год
* Return   : void
* Call     : leap
***********/
{
 int i;
 for (i=1;day>daytab[leap(d->da_year)][i];i++)
  day -= daytab[leap(d->da_year)][i];
 d->da_mon = i;
 d->da_day = day;
 while (d->da_mon>12)
 {
  d->da_year++;
  d->da_mon-=12;
 }
}
Example #20
0
//long Solar2Day1(CLDate *d)
glong _date_calc_days_since_reference_year (CLDate *d, GError **error)
{
    glong days, delta;
    int i;

    delta = d->year - REFERENCE_YEAR;
    if (delta<0)
    {
        g_set_error(error, LUNAR_DATE_ERROR,
                    LUNAR_DATE_ERROR_INTERNAL,
                    _("Internal error: pick a larger constant for BYEAR."));
        return 0;
    }
    days = delta * 365 + delta / 4 - delta / 100 + delta / 400;
    for (i=1; i< d->month; i++)
        days += days_in_solar_month[i];
    if ((d->month > 2) && leap(d->year))
        days++;
    days += d->day - 1;

    if ((d->month == 2) && leap(d->year))
    {
        if (d->day > 29)
        {
            g_set_error(error, LUNAR_DATE_ERROR,
                        LUNAR_DATE_ERROR_DAY,
                        _("Day out of range: \"%d\""),
                        d->day);
            return 0;
        }
    }
    else if (d->day > days_in_solar_month[d->month])
    {
        g_set_error(error, LUNAR_DATE_ERROR,
                    LUNAR_DATE_ERROR_DAY,
                    _("Day out of range: \"%d\""),
                    d->day);
        return 0;
    }
    return days;
}
Example #21
0
File: main.cpp Project: Zabot/Handy
int main(int argc, char **argv)
{
	QApplication app (argc, argv);

	tutorwidget wdg;
	wdg.show();

	SignListener sign(wdg);
	LeapMotion leap(sign);

	return app.exec();
}
Example #22
0
File: 2005.c Project: Jing0/ACM
int main() {
    int year,month,day,n,i;
    int mon[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
    while(scanf("%d/%d/%d",&year,&month,&day)!=EOF) {
        for(i=0,n=day; i<month-1; i++)
            n+=mon[i];
        if(leap(year)&&month>2)
            n++;
        printf("%d\n",n);
    }
    return 0;
}
Example #23
0
GRegionBorderIterator::GRegionBorderIterator(GImage* pImage, int nSampleX, int nSampleY)
{
	m_pImage = pImage;
	m_nRegion = pImage->pixel(nSampleX, nSampleY);
	m_x = nSampleX;
	m_y = nSampleY;
	m_direction = START_DIRECTION;
	while(look())
		leap();
	m_endX = m_x;
	m_endY = m_y;
	m_bOddPass = false;
}
Example #24
0
int main(){
	int sum_day(int month,int day);
	int leap(int year);
	int year,month,day,days;
	printf("input date(year,month,day):");
	scanf("%d,%d,%d",&year,&month,&day);
	printf("%d/%d/%d ",year,month,day);
	days=sum_day(month,day);
	if(leap(year)&&month>=3)
		days=days+1;
	printf("is the %dth day in this year.\n",days);
	return 0;
}
int main()
{
	int leap(int year);
	int numday(int month,int day);
	int year,month,day,number;
	printf("请输入年月日:\n");
	scanf("%d%d%d",&year,&month,&day);
	number=numday(month,day);
	if(leap(year)&&month>2)
		number+=1;
	printf("%d年的%d月%d日是该年的第%d天\n",year,month,day,number);
	return 0;
}
Example #26
0
int step1 (int y)
{
 int x=y%7;
 x+=(y-1)/4;
 x-=(y-1)/100;
 x+=(y-1)/400;
 x=x%7;
 if(x==0)
  x=7;
 if(leap(y))
  x+=7;
 return x;
}
Example #27
0
int main(void){
	clock_t ini = clock();
	for(int y = 1900; y < 2001; ++y)
		for(int m = 0; m < 12; ++m){
			ans += (day == 1 && y > 1900);
			int m_days = d[m] + (m == 1 ? leap(y) : 0);
			while(day <= m_days) day = day + 7;
			day %= m_days;
		}
	printf("Time spent: %.3lfs\n", ((double)(clock() - ini))/CLOCKS_PER_SEC);
	printf("Answer: %d\n", ans);
	return 0;
}
Example #28
0
int day_of_year (struct date *d)
/***********
* Describe : вычисляет номеp дня в году по дате
* Params   : struct date *d - дата
* Return   : int            - номеp дня в году
* Call     : leap
***********/
{
 int i,day;
 day = d->da_day;
 for (i=1;i<d->da_mon;i++)
  day+=daytab[leap(d->da_year)][i];
 return day;
}
Example #29
0
bool GRegionBorderIterator::next(int* pX, int* pY, int* pDirection)
{
	*pX = m_x;
	*pY = m_y;
	*pDirection = m_direction;
	if(m_x == m_endX && m_y == m_endY && m_direction == START_DIRECTION)
		m_bOddPass = !m_bOddPass;
	if(++m_direction >= 4)
		m_direction = 0;
	if(look())
	{
		leap();
		if(--m_direction < 0)
			m_direction = 3;
		if(look())
		{
			leap();
			if(--m_direction < 0)
				m_direction = 3;
		}
	}
	return m_bOddPass;
}
Example #30
0
//y年m月の総日数を返す
	int days(int y,int m){
		switch(m){
			case 1: case 3: case 5: case 7: case 8: case 10: case 12:
				return 31;break;

			case 4: case 6: case 9: case 11:
				return 30;break;

			case 2:	if(leap(y)==0)return 28;
						else return 29;break;

			default:	exit(1);	 break;
		}
	}