什么是2038问题
不知道你有没有听过2038问题?无论你是否听过,本文将带你认识什么是2038问题。
Unix时间戳
定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
而在C语言中,常用time_t来表示。举个例子:
#include
#include
int main (void)
{
time_t rawtime=10;//time(NULL)获取当前时间戳
struct tm info;
//转为tm结构
localtime_r( &rawtime,&info);
//转为字符串
printf("时间为: %s\n", asctime(&info));
return 0;
}
运行结果:
时间为: Thu Jan 1 08:00:10 1970
在这里,我给rawtime设置为10,从打印结果来看也知道是正确的了。(注意,由于我们的时区为东八区,所以得到的时间是八点。)
当然这里的内容暂时不展开,主要关注time_t。
然而实际上,time_t到底是什么?
通常,time_t直接或者间接被定义