C语言获取系统时间及time.h函数使用指南

C语言获取系统日期及时间(time.h的应用)

以下内容基于C/C++语言参考手册的整理与补充


系统时间的获取

time()函数
  在头文件time.h中

time_t time( time_t *time );//返回值为time_t 类型

函数返回当前时间(sec),从1970年1月1日至此时经历的秒数。如果发生错误返回零。如果给定参数time ,那么当前时间存储到参数time中。

通过time()函数来获得计算机系统当前的日历时间,在该函数的基础上进行日期与时间的处理。


time()函数返回值的处理
  1. 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 星期的完整形式 %p AM 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.)

你可能感兴趣的:(#,C语言)