(5) 如何实现后台程序的关于时间的处理与终端机的关于时间的处理之间的完全兼容,开始想用 time_t来实现,后来发现这样做并不好,下面是本人在用例测试中的总结:
a、vc9.0 的time_t 是64位的无符号整数,以1970年 为开始时间
b、mdk中的time_t是32位的无符号整数,以1970年 为开始时间
c、labwindowscvi 9.0的time_t是32位的无符号整数,以1900年为开始时间
如果我上位机用的是vc,那就可以直接用time_t作为时间数结构结来在上位机和下位机之间进行时间交换。但我了cvi,而且,从程序的维护角度来讲,这样直接用time_t来做为上下位机的时间交换,也不好。因此,2009年4月10日我决定写一个自已的time module ,让上位机和下位机都用它来写与时间相关的代码。
(4) vc 中的time module 完全解决了2038这个bug,而cvi和mdk中的time还存在着“2038”这个世纪bug,和“2000”相似。
(3)
/* leap year is any year divisible by four, but not by 100 unless also
* divisible by 400 ( 那年是闰年的计算公式)
*/
#define
isleapyear
(y) ((!(y % 4)) ? (((!(y % 400)) && (y % 100)) ? 1 : 0) : 0)
(2) 一个包含 time.c and time.h源码的压缩包, 给想写自已的time的programmer 作为参考.
http://blog.gkong.com/images/file/zip.gif">http://blog.gkong.com/http://blog.gkong.com/images/file/zip.gif
time.rar
(来自:http://www.apache.org)
(1)
http://blog.gkong.com/images/file/zip.gif">http://blog.gkong.com/http://blog.gkong.com/images/file/zip.gif
vc中的日期和时间 time_t与struct tm转换.mht.rar
(去掉.rar用ie打开即可, 细节讲得不错).
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=83953&Name=zjcsharp