专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
嵌入式
嵌入式linux:Linux时间函数
2019-07-12 15:17
发布
生成海报
站内文章
/
嵌入式Linux
10443
0
1643
转自:http://blog.csdn.net/water_cow/article/details/7521567
系统环境:
ubuntu10.04
简介
本文旨在为了解
Linux
各种时间类型与时间函数提供技术文档。
1、Linux
下常用时间类型
Linux
下常用时间类型有四种:
time_t
、
struct tm
、
struct timeval
、
struct timespec
1.1 time_t
时间类型
time_t
类型在
time.h
中定义:
[cpp]
view plain
copy
print
?
#ifndef __TIME_T
#define __TIME_T
typedef
long
time_t
;
#endif
可见,
time_t
实际是一个长整型。其值表示为从
UTC(coordinated universal time)
时间
1970
年
1
月
1
日
00
时
00
分
00
秒
(
也称为
Linux
系统的
Epoch
时间
)
到当前时刻的秒数。由于
time_t
类型长度的限制,它所表示的时间不能晚于
2038
年
1
月
19
日
03
时
14
分
07
秒(UTC)。
为了能够表示更久远的时间,可用64
位
或更长的整形数来保存日历时间,这里不作详述。
使用time()
函数获取当前时间的
time_t
值,使用
ctime()
函数将
time_t
转为当地时间字符串。
备注
:
UTC
时间有时也称为
GMT
时间,其实
UTC
和
GMT
两者几乎是同一概念。它们都是指格林尼治标准时间,只不过
UTC
的称呼更为正式一点。两者区别在于前者是天文上的概念,而后者是基于一个原子钟。
1.2 struct tm
时间类型
tm
结构在
time.h
中定义:
[cpp]
view plain
copy
print
?
#ifndef _TM_DEFINED
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, 11]*/
int
tm_year;
/*年份 - 其值为1900年至今年数*/
int
tm_wday;
/*星期 - 取值区间[0, 6],0代表星期天,1代表星期1,以此类推*/
int
tm_yday;
/*从每年的1月1日开始的天数-取值区间为[0, 365],0代表1月1日*/
int
tm_isdst;
/*夏令时标识符,使用夏令时,tm_isdst为正,不使用夏令时,tm_isdst为0,不了解情况时,tm_isdst为负*/
};
#define _TM_DEFINED
#endif
ANSI C
标准称使用
tm
结构的这种时间表示为分解时间
(broken-down time)
。
使用
gmtime( )
和
localtime( )
可将
time_t
时间类型转换为
tm
结构体;
使用
mktime( )
将
tm
结构体转换为
time_t
时间类型;
使用
asctime( )
将
struct tm
转换为字符串形式。
1.3 struct timeval
时间类型
timeval
结构体在
time.h
中定义:
[cpp]
view plain
copy
print
?
Struct tmieval{
time_t
tv_sec;
/*秒s*/
suseconds_t tv_usec;
/*微秒us*/
};
设置时间函数
settimeofday( )
与获取时间函数
gettimeofday( )
均使用该事件类型作为传参。
1.4 struct timespec
时间类型
timespec
结构体在
time.h
定义:
[cpp]
view plain
copy
print
?
struct
timespec{
time_t
tv_sec;
/*秒s*/
long
tv_nsec;
/*纳秒ns*/
};
2、Linux
下常用时间函数
Linux
下常用时间函数有:
time( )
、
ctime( )
、
gmtime( )
、
localtime( )
、
mktime( )
、
asctime( )
、
difftime( )
、
gettimeofday( )
、
settimeofday( )
2.1 time( )
函数
头文件:
#include
函数定义:
time_t time(time_t *timer)
功能描述:该函数返回从
1970
年
1
月
1
日
00
时
00
分
00
秒至今所经过的秒数。如果
time_t *timer
非空指针,函数也会将返回值存到
timer
指针指向的内存。
返回值:成功则返回秒数,失败则返回
((time_t)-1)
值,错误原因存于
errno
中。
例:
[cpp]
view plain
copy
print
?
time_t
seconds;
seconds = time((
time_t
*)NULL);
2.2 ctime( )
函数
头文件:
#include
函数定义:
char *ctime(const time_t *timep);
功能描述:
ctime( )
将参数
timep
指向的
time_t
时间信息转换成实际所使用的时间日期表示方法,并以字符串形式返回。字符串格式为:
"Wed Jun 20 21:00:00 2012 "
。
例:
[cpp]
view plain
copy
print
?
time_t
timep;
tmep = time(NULL);
printf(
"%s "
, ctime(&timep));
2.3 gmtime( )
函数
头文件:
#include
函数定义:
struct tm *gmtime(const time_t *timep)
功能描述:
gmtime( )
将参数
timep
指向的
time_t
时间信息转换成以
tm
结构体表示的
GMT
时间信息,并以
struct tm*
指针返回。
GMT
:
GMT
是中央时区
,
北京
在东
8
区
,
相差
8
个小时,所以北京时间
=GMT
时间
+8
小时
。
例:
[cpp]
view plain
Ta的文章
更多
>>
嵌入式linux:Linux时间函数
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮