linux系统时间获取方式
主要函数:time localtime gmtime asctime ctime mktime
difftime strftime gmstrftime
1.time()函数
原型:time_t time(time_t * timer)
功能:返回一个time_t类型的数据,表示从CUT时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数.
然后调用localtime将time_t所表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型,
该类型的各数据成员分别表示年月日时分秒。
2.localtime()函数
原型:struct tm *localtime(const time_t *clock);
返回值:返回指向tm 结构体的指针
功能:把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为日历时间.转换过时区!(Fri Oct 13 17:36:29 2017)
3.gmtime()函数
原型:struct tm *gmtime(long *clock);
返回值:返回指向tm 结构体的指针
功能:所指的time_t结构中的信息(从1970-1-1零点零分到当前时间系统所偏移的秒数)转换成真实世界所使用的时间日期表示
方法,为经过时区转换!比localtime小整整8小时!(Fri Oct 13 09:36:29 2017)
4.asctime()函数
原型:char *asctime(const struct tm *tblock);
功能:转换日期和时间为相应的字符串(如:Fri Oct 13 17:36:29 2017)
5.ctime()函数
原型:char *ctime(const time_t *time);
功能:把日期和时间转换为字符串。(如:Fri Oct 13 17:36:29 2017)
6.mktime()函数
原型:time_t mktime(strcut tm * timeptr);
功能:将所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。
7.difftime()函数
原型:double difftime(time_t time1, time_t time0);
功能:计算时间间隔,以秒为单位,且只能精确到秒.
8.strftime()函数
原型:size_t strftime(char *strDest,size_t maxsize,const char *format,const struct tm *timeptr);
功能:格式化一个时间字符串
返回值:该函数返回向strDest指向的字符串中放置的字符数。
说明:类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。
%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 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号
提示:与 gmstrftime() 的行为相同,不同的是返回时间是本地时间。
9.gettimeofday()函数精确到微秒
原型:int gettimeofday(struct timeval*tv,struct timezone *tz )
功能:在使用gettimeofday()函数时,第二个参数一般都为空,我们一般只是为了获得当前时间,而不用获得timezone的数值
10.getSystemTime
相关类型:
1.time_t实际上是长整数类型,定义为:typedef long time_t;
2.timeval是一个结构体,在time.h中定义为:
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds. */
};
其中,tv_sec为Epoch(1970-1-1零点零分)到创建struct timeval时的秒数,tv_usec为微秒数,即秒后面的零头。
3.tm是一个结构体,定义为:
struct tm
{
int tm_sec; /*代表目前秒数,正常范围为0-59,但允许至61秒 */
int tm_min; /*代表目前分数,范围0-59*/
int tm_hour; /* 从午夜算起的时数,范围为0-23 */
int tm_mday; /* 目前月份的日数,范围01-31 */
int tm_mon; /*代表目前月份,从一月算起,范围从0-11 */
int tm_year; /*从1900 年算起至今的年数*/
int tm_wday; /* 一星期的日数,从星期一算起,范围为0-6。*/
int tm_yday; /* Days in year.[0-365] */
int tm_isdst; /*日光节约时间的旗标DST. [-1/0/1]*/
};
测试代码:
time:
- #include<stdio.h>
- #include<time.h>
- int main()
- {
- time_t t;
- t=time(NULL);
- printf("the number of seconds since 1970-01-01 00:00 is:%d\n",t);
- return 0;
- }
结果:
[root@libmaster time]# ./a.out
the number of seconds since 1970-01-01 00:00 is:1507889358
localtime gmtime ctime asctime tzset
- #include<time.h>
- #include<stdio.h>
- #include<stdlib.h>
- int main(int argc, const charchar *argv[])
- {
- struct tmtm *gmt, *local;
- time_t tt;
- tzset();//void tzset(void);设置时间环境变量-时区
- tt=time(NULL);//等价于time(&tt);
- charchar *str=ctime(&tt);
- printf("ctime is:%s",str);
- local=localtime(&tt);
- printf("%4d年%02d月%02d日 %2d:%2d:%2d\n",local->tm_year+1900,local->tm_mon+1,local->tm_mday,local->tm_hour,local->tm_min,local->tm_sec);
- printf("lcoaltime is:%s",asctime(local));
- gmt=gmtime(&tt);
- printf("gmtime is:%s",asctime(gmt));
- return 0;
- }
结果:
[root@libmaster time]# ./a.out
ctime is:Mon Oct 16 10:40:39 2017
2017年10月16日 10:40:39
lcoaltime is:Mon Oct 16 10:40:39 2017
gmtime is:Mon Oct 16 02:40:39 2017
difftime
- #include <stdio.h>
- #include <time.h>
- int main(){
- time_t t_start, t_end;
- t_start = time(NULL) ;
- sleep(5);
- t_end = time(NULL) ;
- printf("time: %.0f s\n", difftime(t_end,t_start)) ;
- return 0;
- }
结果:
[root@libmaster time]# ./a.out
time: 5 s
gettimeofday
- #include <stdio.h>
- #include <sys/time.h>
- int main() {
- struct timeval start, end;
- gettimeofday( &start, NULL );
- sleep(3);
- gettimeofday( &end, NULL );
- int timeuse = 11000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec;
- printf("time: %d us\n", timeuse);
- return 0;
- }
结果:
[root@libmaster time]# ./a.out
time: 3000205 us
getSystemTime
- #include <stdio.h>
- #include <sys/timeb.h>
- long long getSystemTime() {
- struct timeb t;
- ftime(&t);
- return 11000 * t.time + t.millitm;
- }
- int main() {
- long long start=getSystemTime();
- sleep(3);
- long long end=getSystemTime();
- printf("time: %lld ms\n", end-start);
- return 0;
- }
结果:
[root@libmaster time]# ./a.out
time: 3001 ms
linux系统时间获取方式的更多相关文章
- Linux的硬件时间、校正Linux系统时间及系统时间调用流程
第一部分: 一)概述: 事实上在Linux中有两个时钟系统,分别是系统时间和硬件时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,它比北京时间早8个小时. ...
- Linux_自动调整linux系统时间和时区与Internet时间同步
调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# v ...
- Linux系统时间同步方法小结
在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系.系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不 ...
- 自动调整linux系统时间和时区与Internet时间同步
调整linux系统时间和时区与Internet时间同步 一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的东八区# v ...
- linux 系统时间 硬件时间
Linux时钟分为系统时钟(System Clock)和硬件时钟(Real Time Clock,简称RTC).系统时钟是指当前Linux Kernel中的时钟:而硬件时钟则是主板上由电池供电的时钟, ...
- Linux系统时间同步方法
在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系.系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不 ...
- 时间篇之linux系统时间和RTC时间
一.linux系统下包含两个时间:系统时间(刚启动时读取的是rtc时间)和RTC时间. 一般情况下都会选择芯片上最高精度的定时器作为系统时间的定时基准,以避免在系统运行较长时间后出现大的时间偏移.特点 ...
- 修改linux系统时间的方法(date命令)
修改linux系统时间的方法(date命令) 来源:互联网 作者:佚名 时间:11-18 23:22:27 [大 中 小] date命令不仅可以显示系统当前时间,还可以用它来修改系统时间,下面简单的介 ...
- Linux系统时间的设置
1. Linux系统时间的设置 在Linux中设置系统时间,可以用date命令: //查看时间[root@node1 ~]# dateTue Feb 25 20:15:18 CST 2014//修改时 ...
随机推荐
- Service学习笔记
一 什么是Service Service作为安卓四大组件之一,拥有重要的地位.Service和Activity级别相同,只是没有界面,是运行于后台的服务.这个运行“后台”是指不可见,不是指在后台线程中 ...
- android.os.Handler
android.os.handler A Handler allows you to send and process Message and Runnable objects associated ...
- rac库grid目录权限(6751)导致数据库宕机案例 此方法仅用于紧急救助
问题: 我的rac环境不小心通过chown命令改变了/u01目录及其子目录的权限,导致rac节点2数据库宕掉,sqlplus下打开数据库报错如下: [oracle@node2 ~]$ sqlplus ...
- Flex 布局:实例篇
上一篇文章介绍了Flex布局的语法,今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我只列出代码,详细的语法解释请查阅<Flex布局教程:语法篇& ...
- MFC截图和界面刷新相关问题
问题描写叙述: 就是首先用CDC来截图,保存图片的路径通过dlg窗体来手动设置并传入.但是截下来的图片就会连带那个对话框也截图下来. 就是这样.我想截后面那个图.前面这 ...
- IQKeyboardManager第三方库的使用
IQKeyboardManager是iOS中解决键盘弹起遮挡UITextField/UITextView的一种很实用的工具.无需输入任何代码,不需要额外的设置.使用IQKeyboardManager的 ...
- Mybatis 创建Configuration对象
Mybatis 创建Configuration对象是在项目启动时就创建了. 具体创建流程为: https://blog.csdn.net/wolfcode_cn/article/details/80 ...
- 第六章 优化服务器设置--高性能MySQL 施瓦茨--读书笔记
MySql的默认配置不适用于使用大量资源,因为其通用性很高. 不要期望改变配置文件会带来巨大的性能提升.提升大小取决于工作负载,通常可以通过选择适当的配置参数得到两到三倍的性能提升.在这时候,性能提升 ...
- Django-models进阶
Django-models进阶 extra extra(select=None, where=None, params=None, tables=None, order_by=None, select ...
- 2.3 The Object Model -- Computed Properties
一.What are computed properties? 1. 简而言之,计算属性让你声明函数为属性.你通过定义一个计算属性作为一个函数来创建一个,当你请求这个属性时,Ember会自动调用这个f ...