时间:2021-05-19
Linux系统时间有两种。
(1)日历时间。该值是自协调世界时(UTC)1970年1月1日00:00:00这个特定时间以来所经过的秒数累计值。基本数据类型用time_t保存。最后通过转换才能得到我们平时所看到的24小时制或者12小时间制的时间。
(2)进程时间。也被称为CPU时间,用以度量进程使用的中央处理器资源。进程时间以时钟滴答计算。
本文将给大家详细介绍关于Linux时间的获取和使用,下面话不多说了,来一起看看详细的介绍吧
获取时间戳
time()
调用示例:
结果:
返回一串数值,如1533287924
gettimeofday()和clock_gettime()
time函数只能得到秒精度的时间,为了获得更高精度的时间戳,需要其他函数。gettimeofday函数可以获得微秒精度的时间戳,用结构体timeval来保存;clock_gettime函数可以获得纳秒精度的时间戳,用结构体timespec来保存。
两个函数使用的结构体定义如下:
调用示例:
结果:
编译时要在编译命令最后加上-lrt链接Real Time动态库,如
g++ -o time2 test_time_linux_2.cpp -lrt
Time1: 1533289490s
Time2: 1533289490s, 133547us
Time3: 1533289490s, 133550060ns
可视化时间
tm结构体
得到的时间戳不能直观的展示现在的时间,为此需要使用tm结构体来表示成我们日常所见的时间,该结构体定义如下:
time_t转成tm
gmtime 和localtime可以将time_t类型的时间戳转为tm结构体,用法如下:
固定格式打印时间
得到tm结构体后,可以将其转为字符串格式的日常使用的时间,或者直接从time_t进行转换,分别可以使用以下两个函数达到目的。不过这两个函数只能打印固定格式的时间。
调用示例:
结果:
Fri Aug 3 18:24:29 2018
Fri Aug 3 18:24:29 2018
灵活安全的时间转换函数strftime()
上述两个函数因为可能出现缓冲区溢出的问题而被标记为弃用,因此更加安全的方法是采用strftime方法。
我们可以根据format指向字符串中格式,将timeptr中存储的时间信息按照format指定的形式输出到buf中,最多向缓冲区buf中存放maxsize个字符。该函数返回向buf指向的字符串中放置的字符数。
函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明串 strDest中各种日期和时间信息的确切表示方法。格式串中的其他字符原样放进串中。格式命令列在下面,它们是区分大小写的。
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
调用示例:
结果:
time: 08:18:12 PM, Fri Aug 03, 2018
时间函数之间的关系图
进程时间
进程时间是进程被创建后使用CPU的时间 ,进程时间被分为以下两个部分:
clock函数
clock函数提供了一个简单的接口用于取得进程时间,它返回一个值描述进程使用的总的CPU时间(包括用户时间和内核时间),该函数定义如下:
clock函数返回值得计量单位是CLOCKS_PER_SEC,将返回值除以这个计量单位就得到了进程时间的秒数
times函数
times函数也是一个进程时间函数,有更加具体的进程时间表示,函数定义如下:
times函数虽然返回类型还是clock_t,但是与clock函数返回值的计量单位不同。times函数的返回值得计量单位要通过sysconf(SC_CLK_TCK)来获得。
Linux系统编程手册上一个完整的使用案例如下:
参考
[1] http:///w3cnote/cpp-time_t.html
[2] Unix高级环境编程(第三版)
[3] Unix系统编程手册
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
修改linux的时间可以使用date指令 date命令的功能是显示和设置系统日期和时间。 输入date查看目前系统时间。 修改时间需要date-功能字符修
Linux系统管理_基本权限和归属-RedhatEnterprise5文件和目录在linux系统中是最为重要的,经常使用root用户登录系统可能没感觉,一旦使用
本文所述C#获取和修改系统时间的实现步骤为:系统的时间从SystemTime结构体中取出,并显示在textBox1上,从setDate,setTime控件中获取
不知道大家知不知道Linux系统,使用Linux系统的用户应该比较少,因为使用Linux系统的用户很多都是开发人员。其实Linux系统和Windows系统有很多
问题:在Linux上,我怎样通过命令行来改变日期和时间?在Linux系统中保持日期和时间的同步是每一个Linux用户和系统管理员的重要责任.很多程序都依靠精确的