C语言获取系统日期及时间(time.h的应用)
以下内容基于C/C++语言参考手册的整理与补充
系统时间的获取
time()函数
在头文件time.h中
time_t time( time_t *time );//返回值为time_t 类型
函数返回当前时间(sec),从1970年1月1日至此时经历的秒数。如果发生错误返回零。如果给定参数time ,那么当前时间存储到参数time中。
通过time()函数来获得计算机系统当前的日历时间,在该函数的基础上进行日期与时间的处理。
time()函数返回值的处理
localtime() 函数的使用
//原型
struct tm *localtime( const time_t *time );
int main(){
time_t now;
struct tm *time_now;
time(&now);//等价于now=time(NULL)
time_now=localtime(now);
}
函数返回struct tm结构体指针
该结构体定义在time.h中 具体如下
struct tm {
int tm_sec;//秒[0,59]
int tm_min;//分 - 取值区间为[0,59]
int tm_hour;// 时 - 取值区间为[0,23]
int tm_mday;//一个月中的日期 - 取值区间为[1,31]
int tm_mon;//月份(从一月开始,0代表一月)[0,11]
int tm_year;//年,其值等于实际年份减去1900
int tm_wday;//星期[0,6],其中0代表星期天,1代表星期一
int tm_yday;//从每年1月1日开始的天数,[0,365],0表示1月1日
int tm_isdst;//夏令时标识符,不实行夏令时tm_isdst为0
};
逆函数mktime(struct tm *ptime)功能相反,将结构体time转换为秒,发生错误返回-1。
2.strftime()函数的使用
size_t strftime( char *str, size_t maxsize, const char *fmt, struct tm *time );
函数按照参数fmt所设定格式将time类型的参数格式化为日期时间信息,然后存储在字符串str中(至多maxsize 个字符)。
格式控制字符串fmt如下表所示://0表示周日,周日是一周的开始
格式控制含义格式控制含义%a星期的缩略形式%M分钟[0-59]%A星期的完整形式%pAM or PM%b月份的缩略形式%S秒钟[0-59]%B月份的完整形式%w星期几的数字表示[0-6]%c月份的缩略形式%W一年中的第几周%d月中的第几天(1-31)%x标准日期字符串%H小时, 24小时格式 (0-23)%X标准时间字符串%I小时, 12小时格式 (1-12)%y年[0-99]%j一年中的第几天(1-366)%Y用CCYY表示的年(如:2004)%m月份 (1-12)%Z时区名
3. gmtime ()函数
同localtime()函数,短时返回给定的统一世界时间(通常是格林威治时间),如果系统不支持统一世界时间系统返回NULL。
4.difftime()函数
double difftime( time_t time2, time_t time1 );
返回时间参数time2和time1之差(sec)。
5.ctime() 函数
char *ctime( const time_t *time );
等同于asctime( localtime( tp ) )
函数转换参数time为本地时间格式:
day month date hours:minutes:seconds year\n\0
6.asctime()
char *asctime( const struct tm *ptr );
函数将ptr所指向的时间结构体转换成下列字符串:
day month date hours:minutes:seconds year\n\0
最有用的来了
clock()函数
clock_t clock( void );
函数返回自程序开始运行的处理器时间,如果无可用信息,返回-1。 转换返回值以秒记, 返回值除以CLOCKS_PER_SECOND. (注: 如果编译器是POSIX兼容的, CLOCKS_PER_SECOND定义为1000000.)