包含在头文件<time.h>的time函数用于获取当前时间和日期。
其函数原型为time_t time(time_t *timer)。time_t为新定义数据类型,其定义在<time.h>中。使用不同编译器该定义会略有不同,大致定义为:
typedef unsigned long time_t;
即把unsigned long赋予一个新名字——time_t。
若时间日期无效,该函数返回-1,若timer不为NULL,则在timer指向的对象中也保存时间日期。
例:time(¤t);
current应被定义为time_t型,调用time函数后,current就保存了当前时间,值得注意的是,在许多编译器中,保存的是从基准时间(例如1970年1月1日上午0时0分0秒)经过的秒数。因此,我们还需要调用另一个函数来转化为我们日常生活中使用的时间形式。
即localtime函数其也在<time.h>函数中,原型为struct tm *localtime(const time_t *timer),其返还的时转换后时间的指针!
其中,struct tm的原型为:
struct tm{
int tm_sec; /*秒,范围[0,61],正常范围为[0,59],但允许61s*/
int tm_min; /*分,范围[0,59]*/
int tm_hour; /*时,范围[0,23]*/
int tm_mady;/*日,范围[1,31]*/
int tm_mon; /*距离一月份的月数,范围[0,11]*/
int tm_year;/*距离1900年的年数*/
int tm_wday;/*距离星期日的天数,范围[0,6]*/
int tm_yday;/*距离1月1日的天数,范围[0,365]*/
int tm_isdst; /*夏令时旗标*/
}
称之为时间结构体类型。
于是,要显示当前日期,我们可以这样做:
#include<time.h> //包含time和localtime的函数肯定不能掉的啦!
#include<stdio.h>
#include<windows.h> //包含清屏和暂停指令
void put_date() //自己定义的一个日期时间显示函数
{
time_t current; //用于保存时间(秒数)的变量需定义为time_t类型
struct tm *local; //用于保存转换时间后localtime函数返还的指针
char wday_name[][7]={"日","一","二","三","四","五","六"}; //用于代替tm_wday显示具体星期
time(¤t); //调用time函数,将秒数保存在current中
local=localtime(¤t); //将秒数转化为日常使用日期形式,并将这个指针保存在local中
printf("现在的时间是:%d年%02d月%02d日%02d时%02d分%02d秒(星期%s)",local->tm_year+1900
,local->tm_mon+1
,local->tm_mday
,local->tm_hour
,local->tm_min
,local->tm_sec
,wday_name[local->tm_wday]
);
}
int main()
{
while(1)
{
system("cls");
put_date();
Sleep(1000); //暂停一秒刷新一次
}
return 0;
}
以上就是本人在学习C语言过程中所得的一部分
参考书籍为《明解C语言》