技术论坛

 回复:自编的北京时间-格林尼治时间转换的C函数

返回主题列表
作者 主题
瑞琦
游侠

经验值:471
发帖数:232
精华帖:2
楼主    2006-06-04 13:43:18
主题:自编的北京时间-格林尼治时间转换的C函数
北京时间-格林尼治时间转换的C函数cDateAdd,能够实现从2005年-2100年的时间换算。
函数参数:cDateAdd(sysTime),返回一个结构类型的时间值。
使用方法:
SYSTEMTIME sysTime;
struct tm*ptm;
...(给sysTime赋值)
ptm=cDateAdd(sysTime);
...(取出时间显示)

(因为我没有上传附件权限,所以请城斑竹帮忙给附上来一下)
一等二靠三落空,一想二干三成功
瑞琦
游侠

经验值:471
发帖数:232
精华帖:2
    2006-06-04 14:36:11
精华帖  主题:回复:自编的北京时间-格林尼治时间转换的C函数
不好意思,刚才一时患糊涂了,忘了直接就可以把代码贴上来。
cDateAdd(SYSTEMTIME st )
{
unsigned year,month,day,hour,minute,second;
int i,j,k;
int ysum=0,msum=0,hsum=0;
time_t timer;
struct tm *ptm;

year=st.wYear;
month=st.wMonth;
day=st.wDay;
hour=st.wHour;
minute=st.wMinute;
second=st.wSecond;

for(i=5;i<(year-2000);i++)
{ysum=ysum+365; }

for(i=5;i<(year-2000);i++)
{hsum=hsum+24;
i=i+3;
}
k=year-2000;
if((k==5)(k==9)(k==13)(k==17)(k==21)(k==25)(k==29)(k==33)(k==37)(k==41)(k==45)(k==49)(k==53)) {ysum=ysum+0;}
else if((k==57)(k==61)(k==65)(k==69)(k==73)(k==77)(k==81)(k==85)(k==89)(k==93)(k==97)(k==101)) {ysum=ysum+0;}
else {ysum=ysum-1;}

switch(month-1)
{
case 1 : msum=31; break;
case 2 : msum=59; break;
case 3 : msum=90; break;
case 4 : msum=120; break;
case 5 : msum=151; break;
case 6 : msum=181; break;
case 7 : msum=212; break;
case 8 : msum=243; break;
case 9 : msum=273; break;
case 10: msum=304; break;
case 11: msum=334; break;
}
if(month>2)
{
switch(year-2000)
{
case 8 :msum=msum+1;break;
case 12 :msum=msum+1;break;
case 16 :msum=msum+1;break;
case 20 :msum=msum+1;break;
case 24 :msum=msum+1;break;
case 28 :msum=msum+1;break;
case 32 :msum=msum+1;break;
case 36 :msum=msum+1;break;
case 40 :msum=msum+1;break;
case 44 :msum=msum+1;break;
case 48 :msum=msum+1;break;
case 52 :msum=msum+1;break;
case 56 :msum=msum+1;break;
case 60 :msum=msum+1;break;
case 64 :msum=msum+1;break;
case 68 :msum=msum+1;break;
case 72 :msum=msum+1;break;
case 76 :msum=msum+1;break;
case 80 :msum=msum+1;break;
case 84 :msum=msum+1;break;
case 88 :msum=msum+1;break;
case 92 :msum=msum+1;break;
case 96 :msum=msum+1;break;
case 100 :msum=msum+1;break;
}

}
timer=((11323+1461+ysum+msum+day-1)*24-8)*3600+hour*3600+minute*60+second+hsum*3600;

timer=timer-3600*8;
ptm=localtime(&timer);

return ptm;
}
一等二靠三落空,一想二干三成功
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。