《C语言中有关处理系统时间的知识5330.docx》由会员分享,可在线阅读,更多相关《C语言中有关处理系统时间的知识5330.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言中有关处理系统时间的知识C语言的标准库函数包括一系列日期和时间处理函数,它们都在头文件time.h中说明,含有三种类型:time_t,struct tm和clock_t。 定义的C语言时间函数原型,如下: tiime_t ttimee(tiime_t *timmer); dooublle ddiffftimme(ttimee_t timme1,timme_tt tiime22); sttrucct ttm *gmttimee(coonstt tiime_t *timmer); sttrucct ttm *loccalttimee(coonstt tiime_t *timmer); chh
2、ar *assctiime(connst strructt tmm *ttimeeptrr); chhar *cttimee(coonstt tiime_t *timmer); siize_t sstrfftimme(ccharr *ss,siize_t mmaxssizee,coonstt chhar *foormaat,cconsst sstruuct tm *tiimepptr); tiime_t mmktiime(strructt tmm *ttimeeptrr); cllockk_t cloock(voiid); 时间函函数具有有知识和和应用:1.ascctimme(将将时间和和日期
3、以以字符串串格式表表示) 相关函数:timme,cctimme,ggmtiime,llocaaltiime头文件:#inccludde定义函函数:harr * ascctimme(cconsst sstruuct tm * ttimeeptrr);函函数说明明:ascctimme()将参数数timmepttr所指指的tmm结构中中的信息息转换成成真实世世界所使使用的时时间日期期表示方方法,然然后将结结果以字字符串形形态返回回。此函函数已经经由时区区转换成成当地时时间,字字符串格格式为:“Weed JJun 30 21:49:08 19993nn”返回值:返返回一字字符串表表示目前前当地的的时间
4、日日期。附加说明:若再调调用相关关的时间间日期函函数,此此字符串串可能会会被破坏坏。此函函数与cctimme不同同处在于于传入的的参数是是不同的的结构。范例:#inclludee main() ttimee_t timmep;time (&ttimeep); priintff(“%s”,ascctimme(ggmtiime(&tiimepp);执行 Saat OOct 28 02:10:06 200002.ctiime(将将时间和和日期以以字符串串格式表表示) 相关函数:timme,aascttimee,gmmtimme,llocaaltiime头文件:#inccludde定义函数:chaar
5、 *ctiime(connst timme_tt *ttimeep);函数说明:ctiime()将参参数tiimepp所指的的timme_tt结构中中的信息息转换成成真实世世界所使使用的时时间日期期表示方方法,然然后将结结果以字字符串形形态返回回。此函函数已经经由时区区转换成成当地时时间,字字符串格格式为“WWed Junn 300 211 :449 :08 19993nn”。若若再调用用相关的的时间日日期函数数,此字字符串可可能会被被破坏。返回值:返返回一字字符串表表示目前前当地的的时间日日期。范例:#inclludeemain() tiime_t ttimeep; time (&ttime
6、ep);printtf(“%s”,ctiime(&tiimepp);执行 Saat OOct 28 10 : 112 : 055 2000033.geettiimeoofdaay(取取得目前前的时间间) 相关函数:timme,cctimme,fftimme,ssetttimeeofdday表表头文件件:#inncluude #inclludee 定义函数:intt geettiimeoofdaay ( sttrucct ttimeevall * tv , sstruuct timmezoone * ttz )函数说说明:getttimmeoffdayy()会会把目前前的时间间由tv所所指的结结
7、构返回回,当地地时区的的信息则则放到ttz所指指的结构构中。timevval结结构定义义为:strucct ttimeevall loong tv_secc; /*秒*/long tv_useec; /*微微秒*/;timezzonee结构定定义为:strucct ttimeezonne innt ttz_mminuutesswesst; /*和Grreennwicch 时时间差了了多少分分钟*/int ttz_ddstttimee; /*日光光节约时时间的状状态*/;上述两个结结构都定定义在/usrr/inncluude/syss/tiime.h。tz_dssttiime所所代表的的状态如如
8、下:DST_NNONEE /*不使使用*/DST_UUSA /*美国国*/DST_AAUSTT /*澳澳洲*/DST_WWET /*西西欧*/DST_MMET /*中中欧*/DST_EEET /*东东欧*/DST_CCAN /*加加拿大*/DST_GGB /*大大不列颠颠*/DST_RRUM /*罗马尼尼亚*/DST_TTUR /*土土耳其*/DST_AAUSTTALTT /*澳洲(119866年以后后)*/返回值:成成功则返返回0,失失败返回回1,错错误代码码存于eerrnno。附加说明:EFAAULTT指针ttv和ttz所指指的内存存空间超超出存取取权限。范例: #inncluude#in
9、clludeemain() strucct ttimeevall tvv;strucct ttimeezonne ttz;gettiimeoofdaay (&tvv , &tzz);printtf(“ttv_ssec; %ddn”, tvv,.ttv_ssec) ;printtf(“ttv_uusecc; %dnn”,ttv.ttv_uusecc);printtf(“ttz_mminuutesswesst; %dn”, tzz.tzz_miinutteswwestt);printtf(“ttz_ddstttimee, %dnn”,ttz.ttz_ddstttimee);执行: ttv_ssec
10、: 977485573339tv_ussec:13669966tz_miinutteswwestt:-5540tz_dssttiime:04.gmttimee(取得得目前时时间和日日期) 相关函数:timme,aascttimee,cttimee,loocalltimme表头文件:#inncluude定义函数:strructt tmm*gmmtimme(cconsst ttimee_t*timmep);函数说明:gmttimee()将将参数ttimeep 所所指的ttimee_t 结构中中的信息息转换成成真实世世界所使使用的时时间日期期表示方方法,然然后将结结果由结结构tmm返回。结构tm的的
11、定义为为:strucct ttmint ttm_ssec; /代表目目前秒数数,正常常范围为为0-559,但但允许至至61秒秒int ttm_mmin; /代表目目前分数数,范围围0-559int ttm_hhourr;/ 从午夜夜算起的的时数,范范围为00-233int ttm_mmdayy;/ 目前月月份的日日数,范范围011-311int ttm_mmon; /代表目目前月份份,从一一月算起起,范围围从0-11int ttm_yyearr; /从119000 年算算起至今今的年数数int ttm_wwdayy; /一星星期的日日数,从从星期一一算起,范范围为00-6int ttm_yyd
12、ayy; /从今今年1月月1日算算起至今今的天数数,范围围为0-3655int ttm_iisdsst; /日日光节约约时间的的旗标;此函数返回回的时间间日期未未经时区区转换,而而是UTTC时间间。返回值:返返回结构构tm代代表目前前UTCC 时间间范例:#inclludee main()char *wdday=Suun,Moon,Tuue,Weed,Thhu,Frri,Saat;time_t ttimeep;strucct ttm *p;time(&tiimepp);p=gmttimee(&ttimeep);printtf(“%d%dd%d”,(19900+p-tm_yeaar),(1+p-
13、tm_monn),pp-ttm_mmdayy);printtf(“%s%dd;%dd;%ddn”,wdaaypp-ttm_wwdayy,pp-ttm_hhourr,p-tmm_miin, p-tm_secc);执行:20000/10/28 Satt 8:15:3855.loocalltimme(取取得当地地目前时时间和日日期) 相关函数:timme, ascctimme, ctiime, gmmtimme表头文件:#inncluude定义函数:strructt tmm *llocaaltiime(connst timme_tt * timmep);函数说明:loccalttimee()将将参数
14、ttimeep所指指的tiime_t结构构中的信信息转换换成真实实世界所所使用的的时间日日期表示示方法,然然后将结结果由结结构tmm返回。结结构tmm的定义义请参考考gmttimee()。此此函数返返回的时时间日期期已经转转换成当当地时区区。返回值:返返回结构构tm代代表目前前的当地地时间。范例:#inclludeemain()char *wdday=“Sunn”, “Moon”, “Tuue”, “Weed”, “Thhu”, “Frri”, “Saat”;time_t ttimeep;strucct ttm *p;time(&tiimepp);p=loccalttimee(&ttimeep
15、); /*取得当当地时间间*/printtf (“%dd%d%d ”, (119000+p-tmm_yeear),( l+pp-ttm_mmon), pp-ttm_mmdayy);printtf(“%s%dd:%dd:%ddn”, wddayp-tm_wdaay,p-tm_houur, p-tm_minn, pp-ttm_ssec);执行 20000/10/28 Satt 111:122:2226.mkttimee(将时时间结构构数据转转换成经经过的秒秒数) 相关函数:timme,aascttimee,gmmtimme,llocaaltiime表表头文件件:#inncluude定义函数: ti
16、ime_t mmktiime(strrcutt tmm * timmepttr);函数说明:mkttimee()用用来将参参数tiimepptr所所指的ttm结构构数据转转换成从从公元119700年1月月1日00时0分分0 秒秒算起至至今的UUTC时时间所经经过的秒秒数。返回值:返返回经过过的秒数数。范例:/* 用ttimee()取取得时间间(秒数数),利利用loocalltimme()转换成成strructt tmm 再利利用mkktinne()将将strructt tmm转换成成原来的的秒数*/#inclludeemain()time_t ttimeep;strcuut ttm *p;ti
17、me(&tiimepp);printtf(“ttimee() : %d n”,timmep);p=loccalttimee(&ttimeep);timepp = mkttimee(p);printtf(“ttimee()-loocalltimme()-mmktiime():%dnn”,ttimeep);执行: timme():977494432997time()-loccalttimee()-mkktimme():9774944329977.setttimmeoffdayy(设置置目前时时间)相关函数:timme,cctimme,fftimme,ggetttimeeofdday表表头文件件:
18、#inncluude#inclludee定义函数:intt seettiimeoofdaay ( coonstt sttrucct ttimeevall *ttv,cconsst sstruuct timmezoone *tzz);函数说明:setttimmeoffdayy()会会把目前前时间设设成由ttv所指指的结构构信息,当当地时区区信息则则设成ttz所指指的结构构。详细细的说明明请参考考getttimmeoffdayy()。注注意,只只有rooot权权限才能能使用此此函数修修改时间间。返回值:成成功则返返回0,失失败返回回1,错错误代码码存于eerrnno。错错误代码码 EPPERMM
19、并非非由rooot权权限调用用setttimmeoffdayy(),权权限不够够。EIINVAAL 时时区或某某个数据据是不正正确的,无无法正确确设置时时间。8.timme(取取得目前前的时间间)相关函数:ctiime,fftimme,ggetttimeeofdday表头文件:#inncluude定义函数:timme_tt tiime(timme_tt *tt);函数说明:此函数数会返回回从公元元19770年11月1日日的UTTC时间间从0时时0分00秒算起起到现在在所经过过的秒数数。如果果t 并并非空指指针的话话,此函函数也会会将返回回值存到到t指针针所指的的内存。返回值:成成功则返返回秒数数,失败败则返回回(ttimee_t)-1)值,错错误原因因存于eerrnno中。范例:#inclludeemain()int ssecoondss= ttimee(ttimee_t*)NUULL);printtf(“%dnn”,ssecoondss);执行 9.73EE+088