C语⾔中time_t数据类型详细介绍
包含⽂件:<time.h>
#ifndef __TIME_T
#define __TIME_T    /* 避免重复定义 time_t */
c语言struct头文件typedef long    time_t;    /* 时间值time_t 为长整型的别名*/
#endif
既然time_t实际上是长整型,到未来的某⼀天,从⼀个时间点(⼀般是1970年1⽉1⽇0时0分0秒)到那时的秒数(即⽇历时间)超出了长整形所能表⽰的数的范围怎么办?对time_t数据类型的值来说,它所表⽰的时间不能晚于2038年1⽉18⽇19时14分07秒。为了能够表⽰更久远的时间,⼀些编译器⼚商引⼊了64位甚⾄更长的整形数来保存⽇历时间。⽐如微软在Visual C++中采⽤了__time64_t数据类型来保存⽇历时间,并通过_time64()函数来获得⽇历时间(⽽不是通过使⽤32位字的time()函数),这样就可以通过该数据类型保存3001年1⽉1⽇0时0分0秒(不包括该时间点)之前的时间。
在time.h头⽂件中,我们还可以看到⼀些函数,它们都是以time_t为参数类型或返回值类型的函数:
double difftime(time_t time1, time_t time0);
time_t mktime(struct tm * timeptr);
time_t time(time_t * timer);
char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);
此外,time.h还提供了两种不同的函数将⽇历时间(⼀个⽤time_t表⽰的整数)转换为我们平时看到的把年⽉⽇时分秒分开显⽰的时间格式tm:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);
通过查阅MSDN,我们可以知道Microsoft C/C++ 7.0中时间点的值(time_t对象的值)是从1899年12⽉31⽇0时0分0秒到该时间点所经过的秒数,⽽其它各种版本的Microsoft C/C++和所有不同版本的Visual C++都是计算的从1970年1⽉1⽇0时0分0秒到该时间点所经过的秒数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。