我这段程序中为什么年份必须是1970年后的

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:34:12
我在编程时发现一个问题:
#include<iostream.h>
#include<afx.h>
void main()
{
CTime a(1927,6,7);
cout<<a.Format("%Y,%b,%d")<<endl;
}
此程序变编译时没错误,但无法运行,
年份变为1970年及以后的年就可以运行了
察看CTime类的定义时时简直要在1900年后就符合,所以我实在不知道为什么了?
请大家帮个忙?

这是因为它是用ANSI C标准中的 struct tm 来做的。
那套函数功能挺强但只能处理1970~2038年。
这就是著名的UNIX的千年虫问题,在2038年出现。
好像已经出来了一些改进的日期类,避免了使用 struct tm
我反正是自己编了一个。可以处理1~99999年。这样应该在退休之前可以够用了。