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

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

32

33

34

35

36

37

38

39

40

41

42



43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86



87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115



116

117

118

119

120



121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151



152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191



192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218



219



220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268



269



270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317



318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402



403

404

405

406

407

408

409

410

411

412
