磁铁能让电表走得慢吗:时间加减 C语言

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/04 19:24:44
C语言 时间存储格式为压缩BCD码 7字节 CCYYMMDDHHMMSS 各位的进位制不同 算起来太麻烦了 有没有比较巧妙的算法
当然是进位换算麻烦了 几乎没位都不一样 而且每月都不一样
不会写递归 太危险了 7层嵌套判断又太晕了 呵呵
小急的 有没有什么现成的资源copy一下 不要骂我哈^_^||

在VC中我是这样弄的:

SYSTEMTIME time;
::GetSystemTime(&time);\\取当前时间,time为一个临时的变量
CTime now=time;\\将当前时间存到CTime变量中

\\输入要进行对比的时间存入time中,比如下面(对比时间是2006年8月20日):
time.wYear=2006;
time.wMonth=8;
time.wDay=20;

CTime cmptime=time;\\将要对比的时间放到另一个CTime变量中

CTimeSpan overtime=now-cmptime;\\比较时,两时间直接作差,保存在CTimeSpan变量中,这个值有正负,overtime虽然是CTimeSpan类型的,但是用法和CTime一样

int overdays=overtime.GetDays();\\取天数差距,本例中就为9(今天是8月29日),如果刚才now-cmptime换成cmptime-now,现在的值就是-9

int overdays=overtime.GetMonths();同上,取月差距,其他方法一样,年,分,秒都能比较

自己回去试一试吧,应该有满意的效果!

我也是琢磨了很长时间才弄出来,个人觉得算是比较方便的方法了,正如你所说,时间的计算比较复杂,容易出错,不如让提供好的MFC类对时间进行处理,省去不必要的麻烦!

不知道楼主的意思是哪里麻烦?
是字节提取还是进位换算?

字节提取用位与 移位
进位换算用不同的模加上进位标志就好了啊
如果不想用7层嵌套判断
可以定义一个模数组,用递归一次搞定
应该不会超过10行语句吧

用简写试试 CYMDHMS