linux如何获取当前时间,C获取当前时间,Linux下用C获取当前时间

linux如何获取当前时间,C获取当前时间,Linux下用C获取当前时间

本篇文章主要介绍了Linux操作系统操作系统获取当前时间的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Linux操作系统操作系统下用C获取当前时间,具体如下:

代码(可以把clock_gettime换成time(NULL))

void getNowTime()

{

时间规格时间;

clock_gettime(CLOCK_REALTIME,time);//获取相对于1970到现在的秒数

tm nowTime

localtime_r(time.tv_sec,现在时间);

充电电流[1024];

sprintf(当前,'dddd:d:d',nowtime.tm_year 1900,nowTime.tm_mon,nowTime.tm_mday,

nowTime.tm_hour,nowTime.tm_min,现在时间。TM _ sec);

}

分析:

clock_gettime()

函数'时钟_获取时间'是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。

语法:

#includetime.h

int clock _ gettime(clock id _ t clk _ id,struct timespec * TP);

参数:

时钟标识:检索和设置的时钟标识指定的时钟时间。

时钟_实时:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,中间时刻如果系统时间被用户改成其他,则对应的时间相应改变

时钟_单调性:从系统启动这一刻起开始计时,不受系统时间被用户改变的影响

时钟_进程_CPUTIME_ID:本进程到当前代码系统中央处理器花费的时间

时钟_线程_CPUTIME_ID:本线程到当前代码系统中央处理器花费的时间

结构时间规范

{

时间电视秒/*秒*/

长tv _ nsec/*纳秒*/

};

localtime()

本地时间是把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间。

语法

说明:此函数获得的铥结构体的时间是日历时间。

用法:struct TM *本地时间(const time _ t * clock);

返回值:返回指向铥结构体的指针。铥结构体是时间。h中定义的用于分别存储时间的各个量(年月日等)的结构体。

例1:

#包含标准视频

#包含标准定义

#包含时间。h

int main(void)

{

时间_t定时器;//time_t就是长整型类型

struct tm * tblock

定时器=时间(空);

tblock=localtime(定时器);

printf('本地时间是:%s\n ',ASC时间(t块));

返回0;

}

执行结果:

当地时间是:2009年2月16日11时29分26秒

例2:

上面的例子用了asctime函数,下面这个例子不使用这个函数一样能获取系统当前时间。需要注意的是年份加上1900,月份加上1。

#includetime.h

# includestdio.h

int main()

{

struct TM * t;

电汇时间;

时间(TT);

t=本地时间(TT);

printf('M年d月d日d:d:d\n',t-TM _ 1900年,t-tm_mon 1,t-tm_mday,t-tm_hour,t-tm_min,t-TM _ sec);

返回0;

}

localtime()与localtime_r()的区别

本地时间():

#包含cstdlib

#包括输入输出流

#包含时间。h

#包含标准视频

使用命名空间标准

int main(int argc,char *argv[])

{

time _ t tNow=时间(空);

time _ t tEnd=现在1800

//注意下面两行的区别

struct TM * PTM=当地时间(tNow);

struct TM * pt mend=当地时间(tEnd);

char szTmp[50]={ 0 };

strftime(szTmp,50,' %H:%M:%S ',PTM);

char szEnd[50]={ 0 };

strftime(szEnd,50,' %H:%M:%S ',pt mend);

printf('%s /n ',szTmp);

printf('%s /n ',szEnd);

系统("暂停");

返回退出_成功

}

最后出来的结果是:

21:18:39

21:18:39

和最初想法不一致。

查阅本地时间的文档,发现这段话:

这个结构由函数gmtime和本地时间静态分配和共享。每次调用这些函数中的任何一个,这个结构的内容都会被覆盖。

也就是说每次只能同时使用本地时间()函数一次,要不就会被重写!

本地时间()函数不必是可重入的。不要求可重入的函数也不要求线程安全。

因此本地时间()不是可重入的。同时libc里提供了一个可重入版的函数本地时间_ r();

与本地时间()不同,可重入版本不需要设置tzname。

修改程序:(本地时间_r())

#包含cstdlib

#包括输入输出流

#包含时间。h

#包含标准视频

使用命名空间标准

int main(int argc,char *argv[])

{

time _ t tNow=时间(空);

time _ t tEnd=tNow 1800

//在这里修改程序

//struct TM * PTM=local time(tNow);

//struct TM * pt mend=local time(tEnd);

struct TM PTM={ 0 };

struct TM pt mend={ 0 };

localtime_r(tNow,PTM);

localtime_r(tEnd,pt mend);

char szTmp[50]={ 0 };

strftime(szTmp,50,' %H:%M:%S ',PTM);

char szEnd[50]={ 0 };

strftime(szEnd,50,' %H:%M:%S ',pt mend);

printf('%s /n ',szTmp);

printf('%s /n ',szEnd);

系统(“暂停”);

返回EXIT _ SUCCESS

}

最后的结果是:

10:29:06

10:59:06

tm

结构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/* year,其值等于实际年份减去1900 */

int tm _ wday/* Week取值范围为[0,6],其中0代表星期日,1代表星期一*/

int tm _ yday/*从每年1月1日开始的天数取值范围[0,365],其中0表示1月1日*/

int tm _ isdst/*夏令时标识符,夏令时tm_isdst为正;Tm_isdst为0 */

};

time 函数

返回:自1970年1月1日00: 00: 00以来的秒数。

原型:time_t时间(time_t *calptr)

结果可以通过返回值或参数获得,如示例所示。

头文件time.h

返回值:

成功:秒数,从1970-1-1,00:00:00,可作为整数输出或用于其他函数。

失败:-1

示例:

time _ t now

时间(现在);//相当于now=time(空)

printf('现在时间是%d\n ',现在);

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • linux如何实现多线程,linux多线程编程实例
  • linux如何实现多线程,linux多线程编程实例,Linux多线程编程快速入门
  • linux如何打开隐藏文件,linux隐藏文件指令
  • Linux如何修改普通用户密码,linux中如何修改用户密码
  • linux dmesg命令详解,linux如何打开dmg文件
  • Linux如何安装anaconda,ubuntu16.04安装anaconda
  • linux如何测试网络速度,linux查看网络是否通畅的命令
  • centos安装yum命令,linux如何安装yum
  • ubuntu安装yum命令,linux如何使用yum安装
  • Linux如何安装软件包,Linux下安装软件包的命令
  • linux如何登陆ftp,linux下搭建ftp
  • Linux查看某个端口是否被占用,Linux如何查看端口是否被占用
  • linux如何部署java项目,linux搭建ftp服务器
  • linux如何打开python,linux如何打开终端
  • 留言与评论(共有 条评论)
       
    验证码: