Microsoft.Cpp.Chengdacaizi
天行健,君子以自强不息 地势坤,君子以厚德载物
linux 下获取系统函数的方法
1
C获取系统时间的方法(linux)
2
Reference: http:
//
net.pku.edu.cn/~yhf/linux_c/function/04.html
3
4
asctime(将时间和日期以字符串格式表示)
5
相关函数
6
7
time,ctime,gmtime,localtime
8
9
表头文件
10
11
#include
<
time.h
>
12
13
定义函数
14
15
char
*
asctime(
const
struct
tm
*
timeptr);
16
17
函数说明
18
19
asctime()将参数timeptr所指的tm结构中的信息转
20
21
换成真实世界所使用的时间日期表示方法,然后将结果以字
22
23
符串形态返回。此函数已经由时区转换成当地时间,字符串
24
25
格式为:
26
27
“Wed Jun
30
21
:
49
:
08
1993
\n”
28
29
返回值
30
31
返回一字符串表示目前当地的时间日期。
32
33
34
附加说明
35
36
若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。
37
38
范例
39
40
#include
<
time.h
>
41
main()
42
{
43
time_t timep;
44
time (
&
timep);
45
printf(“
%
s”,asctime(gmtime(
&
timep)));
46
}
47
48
执行 Sat Oct
28
02
:
10
:
06
2000
49
50
51
52
53
ctime(将时间和日期以字符串格式表示)
54
相关函数
55
56
time,asctime,gmtime,localtime
57
58
表头文件
59
60
#include
<
time.h
>
61
62
定义函数
63
64
char
*
ctime(
const
time_t
*
timep);
65
66
函数说明
67
68
ctime()将参数timep所指的time_t结构中的信息转
69
70
换成真实世界所使用的时间日期表示方法,然后将结果以字
71
72
符串形态返回。此函数已经由时区转换成当地时间,字符串
73
74
格式为“Wed Jun
30
21
:
49
:
08
1993
\n”。若再调用相关的
75
76
时间日期函数,此字符串可能会被破坏。
77
78
返回值
79
80
返回一字符串表示目前当地的时间日期。
81
82
范例
83
84
#include
<
time.h
>
85
main()
86
{
87
time_t timep;
88
time (
&
timep);
89
printf(“
%
s”,ctime(
&
timep));
90
}
91
92
执行 Sat Oct
28
10
:
12
:
05
2000
93
94
95
96
97
gettimeofday(取得目前的时间)
98
相关函数
99
100
time,ctime,ftime,settimeofday
101
102
表头文件
103
104
#include
<
sys
/
time.h
>
105
#include
<
unistd.h
>
106
107
定义函数
108
109
int
gettimeofday (
struct
tim
*
tv ,
struct
timezone
*
tz )
110
111
函数说明
112
113
gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
114
tim结构定义为:
115
struct
tim
{
116
long
tv_sec;
117
long
tv_usec;
118
}
;
119
timezone 结构定义为:
120
struct
timezone
{
121
int
tz_minuteswest;
122
int
tz_dsttime;
123
}
;
124
上述两个结构都定义在
/
usr
/
include
/
sys
/
time.h。tz_dsttime
125
126
所代表的状态如下
127
DST_NONE
128
DST_USA
129
DST_AUST
130
DST_WET
131
DST_MET
132
DST_EET
133
DST_CAN
134
DST_GB
135
DST_RUM
136
DST_TUR
137
DST_AUSTALT
138
139
返回值
140
141
成功则返回0,失败返回-
1
,错误代码存于errno。
142
143
附加说明EFAULT指针tv和tz所指的内存空间超出存取权限
144
145
。
146
147
范例
148
149
#include
<
sys
/
time.h
>
150
#include
<
unistd.h
>
151
main()
{
152
struct
tim tv;
153
struct
timezone tz;
154
gettimeofday (
&
tv ,
&
tz);
155
printf(“tv_sec;
%
d\n”, tv,.tv_sec) ;
156
printf(“tv_usec;
%
d\n”,tv.tv_usec);
157
printf(“tz_minuteswest;
%
d\n”, tz.tz_minuteswest);
158
printf(“tz_dsttime,
%
d\n”,tz.tz_dsttime);
159
}
160
161
执行 tv_sec:
974857339
162
tv_usec:
136996
163
tz_minuteswest:
-
540
164
tz_dsttime:
0
165
166
167
168
169
gmtime(取得目前时间和日期)
170
相关函数
171
172
time,asctime,ctime,localtime
173
174
表头文件
175
176
#include
<
time.h
>
177
178
定义函数
179
180
struct
tm
*
gmtime(
const
time_t
*
timep);
181
182
函数说明
183
184
gmtime()将参数timep 所指的time_t 结构中的信息
185
186
转换成真实世界所使用的时间日期表示方法,然后将结果由
187
188
结构tm返回。
189
结构tm的定义为
190
struct
tm
191
{
192
int
tm_sec;
193
int
tm_min;
194
int
tm_hour;
195
int
tm_mday;
196
int
tm_mon;
197
int
tm_year;
198
int
tm_wday;
199
int
tm_yday;
200
int
tm_isdst;
201
}
;
202
int
tm_sec 代表目前秒数,正常范围为0
-
59
,但允许至61秒
203
int
tm_min 代表目前分数,范围0
-
59
204
int
tm_hour 从午夜算起的时数,范围为0
-
23
205
int
tm_mday 目前月份的日数,范围01
-
31
206
int
tm_mon 代表目前月份,从一月算起,范围从0
-
11
207
int
tm_year 从1900 年算起至今的年数
208
int
tm_wday 一星期的日数,从星期一算起,范围为0
-
6
209
int
tm_yday 从今年1月1日算起至今的天数,范围为0
-
365
210
int
tm_isdst 日光节约时间的旗标
211
此函数返回的时间日期未经时区转换,而是UTC时间。
212
213
返回值 返回结构tm代表目前UTC 时间
214
215
范例
216
217
#include
<
time.h
>
218
main()
{
219
char
*
wday[]
=
{
"
Sun
"
,
"
Mon
"
,
"
Tue
"
,
"
Wed
"
,
"
Thu
"
,
"
Fri
"
,
"
Sat
"
}
;
220
time_t timep;
221
struct
tm
*
p;
222
time(
&
timep);
223
p
=
gmtime(
&
timep);
224
printf(“
%
d
%
d
%
d”,(
1900
+
p
->
tm_year), (
1
+
p
->
tm_mon),p
-
225
226
来源:(http:
//
blog.sina.com.cn/s/blog_4d9acd450100gff1.html) - C获取系统时间的方法(linux)_kuyouqi_新浪博客
227
>
tm_mday);
228
printf(“
%
s
%
d;
%
d;
%
d\n”, wday[p
->
tm_wday], p
->
tm_hour, p
229
230
->
tm_min, p
->
tm_sec);
231
}
232
233
执行
2000
/
10
/
28
Sat
8
:
15
:
38
234
235
236
237
238
localtime(取得当地目前时间和日期)
239
相关函数
240
241
time, asctime, ctime, gmtime
242
243
表头文件
244
245
#include
<
time.h
>
246
247
定义函数
248
249
struct
tm
*
localtime(
const
time_t
*
timep);
250
251
函数说明
252
253
localtime()将参数timep所指的time_t结构中的信
254
255
息转换成真实世界所使用的时间日期表示方法,然后将结果
256
257
由结构tm返回。结构tm的定义请参考gmtime()。此函数返回
258
259
的时间日期已经转换成当地时区。
260
261
返回值
262
263
返回结构tm代表目前的当地时间。
264
265
范例
266
267
#include
<
time.h
>
268
main()
{
269
char
*
wday[]
=
{“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”}
;
270
time_t timep;
271
struct
tm
*
p;
272
time(
&
timep);
273
p
=
localtime(
&
timep);
274
printf (“
%
d
%
d
%
d ”, (
1900
+
p
->
tm_year),( l
+
p
->
tm_mon), p
-
275
276
>
tm_mday);
277
printf(“
%
s
%
d:
%
d:
%
d\n”, wday[p
->
tm_wday],p
->
tm_hour, p
278
279
->
tm_min, p
->
tm_sec);
280
}
281
282
执行
2000
/
10
/
28
Sat
11
:
12
:
22
283
284
285
286
287
mktime(将时间结构数据转换成经过的秒数)
288
相关函数
289
290
time,asctime,gmtime,localtime
291
292
表头文件
293
294
#include
<
time.h
>
295
296
定义函数
297
298
time_t mktime(strcut tm
*
timeptr);
299
300
函数说明
301
302
mktime()用来将参数timeptr所指的tm结构数据转
303
304
换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间
305
306
所经过的秒数。
307
308
返回值
309
310
返回经过的秒数。
311
312
范例
313
314
315
#include
<
time.h
>
316
main()
317
{
318
time_t timep;
319
strcut tm
*
p;
320
time(
&
timep);
321
printf(“time() :
%
d \n”,timep);
322
p
=
localtime(
&
timep);
323
timep
=
mktime(p);
324
printf(“time()
->
localtime()
->
mktime():
%
d\n”,timep);
325
}
326
327
执行 time():
974943297
328
time()
->
localtime()
->
mktime():
974943297
329
330
331
332
333
settimeofday(设置目前时间)
334
相关函数
335
336
time,ctime,ftime,gettimeofday
337
338
表头文件
339
340
#include
<
sys
/
time.h
>
341
#include
<
unistd.h
>
342
343
定义函数
344
345
int
settimeofday (
const
struct
tim
*
tv,
const
346
347
struct
timezone
*
tz);
348
349
函数说明
350
351
settimeofday()会把目前时间设成由tv所指的结构
352
353
信息,当地时区信息则设成tz所指的结构。详细的说明请参
354
355
考gettimeofday()。注意,只有root权限才能使用此函数修改
356
357
时间。
358
359
返回值
360
361
成功则返回0,失败返回-
1
,错误代码存于errno。
362
363
错误代码 EPERM 并非由root权限调用settimeofday(),
364
365
权限不够。
366
EINVAL 时区或某个数据是不正确的,无法正确设置时间。
367
368
369
370
371
time(取得目前的时间)
372
相关函数
373
374
ctime,ftime,gettimeofday
375
376
表头文件
377
378
#include
<
time.h
>
379
380
定义函数
381
382
time_t time(time_t
*
t);
383
384
函数说明
385
386
此函数会返回从公元1970年1月1日的UTC时间从
387
388
0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的
389
390
话,此函数也会将返回值存到t指针所指的内存。
391
392
返回值
393
394
成功则返回秒数,失败则返回((time_t)
-
1
)值,错误
395
396
原因存于errno中。
397
398
范例
399
400
#include
<
time.h
>
401
main()
402
{
403
int
seconds
=
time((time_t
*
)NULL);
404
printf(“
%
d\n”,seconds);
405
}
406
407
执行
9.73E+08
408
409
410
411
本文来自CSDN博客,转载请标明出处:http:
//
blog.csdn.net/haoyuewuwei/archive/2009/08/18/4460914.aspx
412
posted on 2010-06-30 15:42
成大才子
阅读(663)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 成大才子
<
2010年7月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
导航
C++博客
首页
新随笔
联系
聚合
管理
统计
随笔 - 16
文章 - 1
评论 - 4
引用 - 0
公告
关于更多关于成大才子,请访问http://hi.baidu.com/成大才子
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔档案
2011年2月 (1)
2011年1月 (5)
2010年8月 (1)
2010年7月 (1)
2010年6月 (5)
2009年3月 (3)
文章分类
ACM(1)
(rss)
文章档案
2010年6月 (1)
链接
POJ
成大才子之百度空间
搜索
最新评论
1. re: poj 1101
@rayafjyblue
呵呵,好像不是那个原因。
--caizi
2. re: poj 1101
数组开78大概是因为字符串数组的每一行都有个‘\0’吧,所以要大一点。。。。。偶也是菜鸟。。。。
--rayafjyblue
3. re: 北航 1066 求最长公共子学列
很好的小题。
--成大才子
4. re: pku 3705
你就是传说中的成大才子??
久仰久仰
--NightMare
阅读排行榜
1. poj 1101(692)
2. linux 下获取系统函数的方法(663)
3. csharp静态构造器(653)
4. poj 3628(307)
5. 关于this索引器(290)
评论排行榜
1. poj 1101(2)
2. pku 3705(1)
3. 大早晨的~呵呵,附上1154(0)
4. poj 2726(0)
5. 北航 1066 最长公共子序列的长度(0)