/*
*File:time.cpp
*Auther:WTT @ home
*mday:2010-08-16
*Note:copy right by WTT
*Mail:jbx-gentleman@hotmail.com
*
*
*/
#include<stdio.h>
#include<malloc.h>
#include"time.h"
//----------------------------------------------------------------------------------------------------
int days_of_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
tm_calendar::tm_calendar(){}
tm_calendar::~tm_calendar(){}
//----------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------
void tm_calendar::add_sec (struct tm * cur_time)
{
#ifdef _TM_DEBUG_PRINT_
printf("add second:\t");
#endif
if((cur_time->s<0)||(cur_time->s>59))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:second over\n");
#endif
return;
}
else
{
if(59==cur_time->s)
{
cur_time->s=0;
add_min(cur_time);
}
else
{
cur_time->s++;
}
}
}
//----------------------------------------------------------------------------------------------------
void tm_calendar::add_min (struct tm * cur_time)
{
#ifdef _TM_DEBUG_PRINT_
printf("add minute:\t");
#endif
if((cur_time->min<0)||(cur_time->min>59))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:minute over\n");
#endif
return;
}
else
{
if(59==cur_time->min)
{
cur_time->min=0;
add_hour(cur_time);
}
else
{
cur_time->min++;
}
}
}
//----------------------------------------------------------------------------------------------------
void tm_calendar::add_hour (struct tm * cur_time)
{
#ifdef _TM_DEBUG_PRINT_
printf("add hour:\t");
#endif
if((cur_time->hour<0)||(cur_time->hour>23))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:hour over\n");
#endif
return;
}
else
{
if(23==cur_time->hour)
{
cur_time->hour=0;
add_day(cur_time);
}
else
{
cur_time->hour++;
}
}
}
//----------------------------------------------------------------------------------------------------
void tm_calendar::add_day (struct tm * cur_time)
{
//test code--------------------------------------------------
/*
cur_time=(struct tm *)malloc(sizeof(struct tm));
int i=1;
mk_tm (cur_time,1987,7,31,10,42,59);
print_tm(cur_time);
for(;i<365*23+24;i++)
{
add_day(cur_time);
print_tm(cur_time);
}
*/
//test code--------------------------------------------------
#ifdef _TM_DEBUG_PRINT_
printf("add day:\t");
#endif
switch(cur_time->month)
{
case 1:
if(cur_time->mday>31)
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if((cur_time->mday==31)||(cur_time->mday<1))
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 2:
if(((get_int_year(cur_time)%4==0)&&(get_int_year(cur_time)%100!=0))
||((get_int_year(cur_time)%100==0)&&(get_int_year(cur_time)%400==0)))
{
if((cur_time->mday>29)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==29)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
}
else
{
if((cur_time->mday>28)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==28)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
}
break;
case 3:
if((cur_time->mday>31)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==31)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 4:
if((cur_time->mday>30)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==30)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 5:
if((cur_time->mday>31)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==31)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 6:
if((cur_time->mday>30)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==30)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 7:
if((cur_time->mday>31)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==31)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 8:
if((cur_time->mday>31)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==31)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 9:
if((cur_time->mday>30)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==30)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 10:
if((cur_time->mday>31)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==31)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 11:
if((cur_time->mday>30)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==30)
{
cur_time->mday=1;
cur_time->month++;
}
else
{
cur_time->mday++;
}
}
break;
case 12:
if((cur_time->mday>31)||(cur_time->mday<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:mday of month over\n");
#endif
return;
}
else
{
if(cur_time->mday==31)
{
cur_time->mday=1;
add_month(cur_time);
}
else
{
cur_time->mday++;
}
}
break;
default:
#ifdef _TM_DEBUG_PRINT_
printf("err:month err!\n");
#endif
break;
}
}
//----------------------------------------------------------------------------------------------------
void tm_calendar::add_month(struct tm * cur_time)
{
#ifdef _TM_DEBUG_PRINT_
printf("add month:\t");
#endif
if((cur_time->month>12)||(cur_time->month<1))
{
#ifdef _TM_DEBUG_PRINT_
printf("err:month not in 1~12\n");
#endif
return;
}
if(cur_time->month<12)
cur_time->month++;
else
{
cur_time->month=1;
add_year (cur_time);
return;
}
}
//----------------------------------------------------------------------------------------------------
void tm_calendar::add_year (struct tm * cur_time)
{
#ifdef _TM_DEBUG_PRINT_
printf("add year:\t");
#endif
if(cur_time->yearL>99)
{
#ifdef _TM_DEBUG_PRINT_
printf("err:yearL > 99\n");
#endif
return;
}
if(99==cur_time->yearL)
{
cur_time->yearL=0;
cur_time->yearH++;
}
else cur_time-
- 1
- 2
- 3
前往页