/*
*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-
基于linux QT开发的万年历程序
4星 · 超过85%的资源 需积分: 50 129 浏览量
2010-08-22
20:42:49
上传
评论 7
收藏 57KB RAR 举报
jbx_gentleman
- 粉丝: 4
- 资源: 97
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页