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星期的完整形式%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.)

  • 11
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值