使用Linux时间编程相关函数,编写程序,通过实现与函数asctime相同功能的函数获取本地时间,以格式字符串方式显示
概念:日历时间,通过time_t数据类型来表示,从一个时间点(通常是1970年1月1日0时0分0秒)到此时的秒数。
格林威治时间:由英国皇家格林尼治天文台提供的标准时间。
本地时间:根据格林威治时间和本地时区计算出的时间。
1、获取当前的系统时间--time
头文件:#include<time.h>
函数原型:time_t time(time_t *timer)
参数说明:timer:timer=NULL时得到系统日历时间,timer等于时间数值时,用于设置日历时间。
返回值:返回日历时间。
2、通过日历时间获得本地时间--localtime
函数原型:struct tm *localtime(const time_t *clock)
参数说明:clock指向日历时间的指针变量。
返回值:返回指向tm结构体的指针。
3、通过日历时间获得格林威治时间---gmtime
函数原型:struct tm *gmtime(long *clock)
参数说明:clock指向日历时间的指针变量
返回值:返回指向tm结构体的指针。
4、转换日期和时间为ASCII码---asctime
函数原型:char *asctime(const struct tm *tblock)
参数说明:tblock记录时间的tm结构
返回值:返回字符串格式:星期,月,日,小时:分:秒,年。
5、把日期和时间转换为字符串---ctime
函数原型:char *ctime(const time_t *time);
参数说明:time指向日历时间的指针变量,该参数应由函数time函数获得。
返回值:返回字符串格式:星期,月,日,小时;分;秒,年
6、取得目前时间-----gettimeofday
函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
参数说明:tv当前timeval结构;tz时区结构。
返回值:成功0,失败-1.
7、把日期和时间转换为字符串---settimeofday
函数原型:int settimeofday(const struct timeval *tv,const struct timezone *tz);
参数说明:tv:当前timeval结构;tz:时区结构。
返回值:成功0,失败-1.
tm结构体:是C语言中用于表示日期和时间的结构体,
struct tm
{
int tm_sec;//表示秒数,在0-61之间,多出来的2秒是用来处理跳秒问题用的
int tm_min;//表示分数,0-59之间
int tm_hour;//表示时数,0-23之间
int tm_mday;//表示本月第几日,[1,31]之间
int tm_mon;//表示本年第几月[0,11]
int tm_year;//从1900到现在的年数
int tm_wday;//本周第几日,[0-6]之间
int tm_yday;//本年第几日[0,365],闰年有366
int tm_isday;//是否为日光节约时间
};
sprintf---把格式化的数据写入某个字符串
函数原型:int sprintf(char *buffer,const char *format);
返回值:字符串长度(strlen)
注意sprintf输出的数据到字符串buffer中,printf将数据输出到命令行。
获取本地时间,以格式字符串方式显示
总结:通过本实验可以看出,要获得本地时间字符串,一般需要三个步骤:
1、通过time函数获得日历时间
2、通过localtime函数将日历时间转化为本地时间
3、通过asctime函数将本地时间转化为字符串
当然,可以不经过步骤2),直接使用ctime从日历时间获得时间字符串。