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; }
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); } }
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; }
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; } }
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; }
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; }
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; }
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; }
/** * 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; }
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; } } }
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; }
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); }
void next() { int p=c[m]; if (m==2 && leap()) p++; d++; if (d>p) m++,d=1; if (m>12) y++,m=1; }
/* 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; }
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; } }
//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; }
int main(int argc, char **argv) { QApplication app (argc, argv); tutorwidget wdg; wdg.show(); SignListener sign(wdg); LeapMotion leap(sign); return app.exec(); }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
//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; } }