linux 下获取系统函数的方法

 

  1C获取系统时间的方法(linux)
  2Reference: http://net.pku.edu.cn/~yhf/linux_c/function/04.html
  3
  4asctime(将时间和日期以字符串格式表示) 
  5相关函数 
  6
  7time,ctime,gmtime,localtime
  8 
  9表头文件 
 10
 11#include<time.h>
 12 
 13定义函数 
 14
 15char * asctime(const struct tm * timeptr);
 16 
 17函数说明 
 18
 19asctime()将参数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>
 41main()
 42{
 43time_t timep;
 44time (&timep);
 45printf(“%s”,asctime(gmtime(&timep)));
 46}

 47 
 48执行  Sat Oct 28 02:10:06 2000
 49 
 50 
 51
 52 
 53ctime(将时间和日期以字符串格式表示) 
 54相关函数 
 55
 56time,asctime,gmtime,localtime
 57 
 58表头文件 
 59
 60#include<time.h>
 61 
 62定义函数 
 63
 64char *ctime(const time_t *timep);
 65 
 66函数说明 
 67
 68ctime()将参数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>
 85main()
 86{
 87time_t timep;
 88time (&timep);
 89printf(“%s”,ctime(&timep));
 90}

 91 
 92执行  Sat Oct 28 10 : 12 : 05 2000
 93 
 94 
 95
 96 
 97gettimeofday(取得目前的时间) 
 98相关函数 
 99
100time,ctime,ftime,settimeofday
101 
102表头文件 
103
104#include <sys/time.h>
105#include <unistd.h>
106 
107定义函数 
108
109int gettimeofday ( struct tim * tv , struct  timezone * tz )
110 
111函数说明 
112
113gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
114tim结构定义为:
115struct tim{
116long tv_sec;
117long tv_usec;
118}
;
119timezone 结构定义为:
120struct timezone{
121int tz_minuteswest;
122int tz_dsttime;
123}
;
124上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime
125
126所代表的状态如下
127DST_NONE
128DST_USA
129DST_AUST
130DST_WET
131DST_MET
132DST_EET
133DST_CAN
134DST_GB
135DST_RUM
136DST_TUR
137DST_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>
151main(){
152struct tim tv;
153struct timezone tz;
154gettimeofday (&tv , &tz);
155printf(“tv_sec; %d\n”, tv,.tv_sec) ;
156printf(“tv_usec; %d\n”,tv.tv_usec);
157printf(“tz_minuteswest; %d\n”, tz.tz_minuteswest);
158printf(“tz_dsttime, %d\n”,tz.tz_dsttime);
159}

160 
161执行  tv_sec: 974857339
162tv_usec:136996
163tz_minuteswest:-540
164tz_dsttime:0
165 
166 
167
168 
169gmtime(取得目前时间和日期) 
170相关函数 
171
172time,asctime,ctime,localtime
173 
174表头文件 
175
176#include<time.h>
177 
178定义函数 
179
180struct tm*gmtime(const time_t*timep);
181 
182函数说明 
183
184gmtime()将参数timep 所指的time_t 结构中的信息
185
186转换成真实世界所使用的时间日期表示方法,然后将结果由
187
188结构tm返回。
189结构tm的定义为
190struct tm
191{
192int tm_sec;
193int tm_min;
194int tm_hour;
195int tm_mday;
196int tm_mon;
197int tm_year;
198int tm_wday;
199int tm_yday;
200int tm_isdst;
201}
;
202int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒
203int tm_min 代表目前分数,范围0-59
204int tm_hour 从午夜算起的时数,范围为0-23
205int tm_mday 目前月份的日数,范围01-31
206int tm_mon 代表目前月份,从一月算起,范围从0-11
207int tm_year 从1900 年算起至今的年数
208int tm_wday 一星期的日数,从星期一算起,范围为0-6
209int tm_yday 从今年1月1日算起至今的天数,范围为0-365
210int tm_isdst 日光节约时间的旗标
211此函数返回的时间日期未经时区转换,而是UTC时间。
212 
213返回值  返回结构tm代表目前UTC 时间
214 
215范例 
216
217#include <time.h>
218main(){
219char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
220time_t timep;
221struct tm *p;
222time(&timep);
223p=gmtime(&timep);
224printf(“%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);
228printf(“%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 
238localtime(取得当地目前时间和日期) 
239相关函数 
240
241time, asctime, ctime, gmtime
242 
243表头文件 
244
245#include<time.h>
246 
247定义函数 
248
249struct tm *localtime(const time_t * timep);
250 
251函数说明 
252
253localtime()将参数timep所指的time_t结构中的信
254
255息转换成真实世界所使用的时间日期表示方法,然后将结果
256
257由结构tm返回。结构tm的定义请参考gmtime()。此函数返回
258
259的时间日期已经转换成当地时区。
260 
261返回值
262
263 返回结构tm代表目前的当地时间。
264 
265范例 
266
267#include<time.h>
268main(){
269char *wday[]={“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”};
270time_t timep;
271struct tm *p;
272time(&timep);
273p=localtime(&timep);
274printf (“%d%d%d ”, (1900+p->tm_year),( l+p->tm_mon), p-
275
276>tm_mday);
277printf(“%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 
287mktime(将时间结构数据转换成经过的秒数) 
288相关函数 
289
290time,asctime,gmtime,localtime
291 
292表头文件 
293
294#include<time.h>
295 
296定义函数 
297
298time_t mktime(strcut tm * timeptr);
299 
300函数说明 
301
302mktime()用来将参数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>
316main()
317{
318time_t timep;
319strcut tm *p;
320time(&timep);
321printf(“time() : %d \n”,timep);
322p=localtime(&timep);
323timep = mktime(p);
324printf(“time()->localtime()->mktime():%d\n”,timep);
325}

326 
327执行  time():974943297
328time()->localtime()->mktime():974943297
329 
330 
331
332 
333settimeofday(设置目前时间) 
334相关函数 
335
336time,ctime,ftime,gettimeofday
337 
338表头文件 
339
340#include<sys/time.h>
341#include<unistd.h>
342 
343定义函数 
344
345int settimeofday ( const struct tim *tv,const
346
347struct timezone *tz);
348 
349函数说明 
350
351settimeofday()会把目前时间设成由tv所指的结构
352
353信息,当地时区信息则设成tz所指的结构。详细的说明请参
354
355考gettimeofday()。注意,只有root权限才能使用此函数修改
356
357时间。
358 
359返回值 
360
361成功则返回0,失败返回-1,错误代码存于errno。
362 
363错误代码  EPERM 并非由root权限调用settimeofday(),
364
365权限不够。
366EINVAL 时区或某个数据是不正确的,无法正确设置时间。
367 
368 
369
370 
371time(取得目前的时间) 
372相关函数
373
374ctime,ftime,gettimeofday
375 
376表头文件 
377
378#include<time.h>
379 
380定义函数 
381
382time_t time(time_t *t);
383 
384函数说明 
385
386此函数会返回从公元1970年1月1日的UTC时间从
387
3880时0分0秒算起到现在所经过的秒数。如果t 并非空指针的
389
390话,此函数也会将返回值存到t指针所指的内存。
391 
392返回值 
393
394成功则返回秒数,失败则返回((time_t)-1)值,错误
395
396原因存于errno中。
397 
398范例 
399
400#include<time.h>
401main()
402{
403int seconds= time((time_t*)NULL);
404printf(“%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)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

公告

关于更多关于成大才子,请访问http://hi.baidu.com/成大才子

常用链接

留言簿(1)

随笔档案

文章分类

文章档案

链接

搜索

最新评论

阅读排行榜

评论排行榜