《C语言中有关处理系统时间的知识12122.docx》由会员分享,可在线阅读,更多相关《C语言中有关处理系统时间的知识12122.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言中有关处理系统时间的知识C语言的标标准库函数数包括一系系列日期和和时间处理理函数,它它们都在头头文件tiime.hh中说明,含含有三种类类型:tiime_tt,strruct tm和cclockk_t。 定义义的C语言言时间函数数原型,如如下: tiime_tt timme(tiime_tt *tiimer); dooublee diffftimme(tiime_tt timme1,ttime_t tiime2); sttructt tm *gmttime(consst tiime_tt *tiimer); sttructt tm *loccaltiime(cconstt timme_t
2、 *timmer); chhar *ascttime(consst sttructt tm *timmeptrr); chhar *ctimme(coonst timee_t *timeer); siize_tt strrftimme(chhar *s,siize_tt maxxsizee,connst cchar *forrmat,consst sttructt tm *timmeptrr); tiime_tt mkttime(struuct ttm *ttimepptr); cllock_t cllock(voidd); 时间函函数具有知知识和应用用:1.ascctimee(将时间间和日期
3、以以字符串格格式表示) 相关函数:timee,ctiime,ggmtimme,loocalttime头文件:#incllude定定义函数:har * assctimme(coonst struuct ttm * timeeptr);函数说说明:ascttime()将参数数timeeptr所所指的tmm结构中的的信息转换换成真实世世界所使用用的时间日日期表示方方法,然后后将结果以以字符串形形态返回。此此函数已经经由时区转转换成当地地时间,字字符串格式式为:“WWed JJun 330 211:49:08 11993n”返回值:返返回一字符符串表示目目前当地的的时间日期期。附加说明:若再调用用相关
4、的时时间日期函函数,此字字符串可能能会被破坏坏。此函数数与ctiime不同同处在于传传入的参数数是不同的的结构。范例:#incllude main() ttime_t tiimep;time (&tiimep); priintf(“%s”,ascttime(gmtiime(&timeep);执行 Saat Occt 288 02:10:006 200002.ctiime(将将时间和日日期以字符符串格式表表示) 相关函数:timee,ascctimee,gmttime,llocalltimee头文件:#incllude定义函数:charr *cttime(consst tiime_tt *tii
5、mep);函数说明:ctimme()将将参数tiimep所所指的tiime_tt结构中的的信息转换换成真实世世界所使用用的时间日日期表示方方法,然后后将结果以以字符串形形态返回。此此函数已经经由时区转转换成当地地时间,字字符串格式式为“Weed Juun 300 21 :49 :08 19933n”。若若再调用相相关的时间间日期函数数,此字符符串可能会会被破坏。返回值:返返回一字符符串表示目目前当地的的时间日期期。范例:#inclludemain() tiime_tt timmep; time (&tiimep);printtf(“%s”,cctimee(&tiimep);执行 Saat Oc
6、ct 288 10 : 122 : 005 200003.getttimeoofdayy(取得目目前的时间间) 相关函数:timee,ctiime,fftimee,setttimeeofdaay表头文文件:#inccludee #incllude 定义函数:int getttimeoofdayy ( sstrucct tiimevaal * tv , strruct timeezonee * ttz )函函数说明:getttimeoofdayy()会把把目前的时时间由tv所指指的结构返返回,当地地时区的信信息则放到到tz所指指的结构中中。timevval结构构定义为:strucct tiime
7、vaal lonng tvv_secc; /*秒*/long tv_uusec; /*微微秒*/;timezzone结结构定义为为:strucct tiimezoone intt tz_minuuteswwest; /*和Grreenwwich 时间差了了多少分钟钟*/int ttz_dssttimme; /*日光节节约时间的的状态*/;上述两个结结构都定义义在/ussr/inncludde/syys/tiime.hh。tz_dssttimme所代表表的状态如如下:DST_NNONE /*不使使用*/DST_UUSA /*美国国*/DST_AAUST /*澳澳洲*/DST_WWET /*西西欧
8、*/DST_MMET /*中中欧*/DST_EEET /*东东欧*/DST_CCAN /*加加拿大*/DST_GGB /*大大不列颠*/DST_RRUM /*罗罗马尼亚*/DST_TTUR /*土土耳其*/DST_AAUSTAALT /*澳洲(11986年年以后)*/返回值:成成功则返回回0,失败败返回11,错误代代码存于eerrnoo。附加说明:EFAUULT指针针tv和ttz所指的的内存空间间超出存取取权限。范例: #inccludee#inclludemain() strucct tiimevaal tvv;strucct tiimezoone ttz;gettiimeoffday (&
9、tvv , &tz);printtf(“ttv_seec; %dn”, tv,.tv_sec) ;printtf(“ttv_ussec; %dnn”,tvv.tv_usecc);printtf(“ttz_miinuteeswesst; %dn”, tz.tz_mminuttesweest);printtf(“ttz_dssttimme, %dn”,tz.ttz_dssttimme);执行: ttv_seec: 997485573399tv_ussec:11369996tz_miinuteeswesst:-5540tz_dssttimme:044.gmttime(取取得目前时时间和日期期) 相关
10、函数:timee,ascctimee,ctiime,llocalltimee表头文件:#inccludee定义函数:struuct ttm*gmmtimee(connst ttime_t*tiimep);函数说明:gmtiime()将参数ttimepp 所指的的timee_t 结结构中的信信息转换成成真实世界界所使用的的时间日期期表示方法法,然后将将结果由结结构tm返返回。结构tm的的定义为:strucct tmmint ttm_seec; /代表目目前秒数,正正常范围为为0-599,但允许许至61秒秒int ttm_miin; /代表目目前分数,范范围0-559int ttm_hoour;/
11、 从午夜算算起的时数数,范围为为0-233int ttm_mdday;/ 目前月份份的日数,范范围01-31int ttm_moon; /代表目目前月份,从从一月算起起,范围从从0-111int ttm_yeear; /从11900 年算起至至今的年数数int ttm_wdday; /一星星期的日数数,从星期期一算起,范范围为0-6int ttm_ydday; /从今今年1月11日算起至至今的天数数,范围为为0-3665int ttm_issdst; /日光光节约时间间的旗标;此函数返回回的时间日日期未经时时区转换,而而是UTCC时间。返回值:返返回结构ttm代表目目前UTCC 时间范例:#i
12、ncllude main()char *wdaay=Suun,Mon,Tuue,Wed,Thhu,Fri,Saat;time_t tiimep;strucct tmm *p;time(&timmep);p=gmttime(&timmep);printtf(“%d%d%d”,(19000+p-tm_yyear),(1+p-ttm_moon),pp-tmm_mdaay);printtf(“%s%d;%d;%dn”,wdayyp-tm_wwday,p-tm_hhour,p-ttm_miin, pp-tmm_secc);执行:20000/110/288 Satt 8:115:3885.loccalti
13、ime(取取得当地目目前时间和和日期) 相关函数:timee, assctimme, cctimee, gmmtimee表头文件:#inccludee定义函数:struuct ttm *llocalltimee(connst ttime_t * timeep);函数说明:locaaltimme()将将参数tiimep所所指的tiime_tt结构中的的信息转换换成真实世世界所使用用的时间日日期表示方方法,然后后将结果由由结构tmm返回。结结构tm的的定义请参参考gmttime()。此函函数返回的的时间日期期已经转换换成当地时时区。返回值:返返回结构ttm代表目目前的当地地时间。范例:#incll
14、udemain()char *wdaay=“Sun”, “Monn”, “Tuee”, “Wedd”, “Thuu”, “Frii”, “Satt”;time_t tiimep;strucct tmm *p;time(&timmep);p=loccaltiime(&timeep); /*取得得当地时间间*/printtf (“%d%d%d ”, (19900+pp-tmm_yeaar),( l+pp-tmm_monn), pp-tmm_mdaay);printtf(“%s%d:%d:%dn”, wdaayp-tm_wdayy,p-tm_hourr, p-tm_min, p-tm_ssec);执
15、行 20000/110/288 Satt 11:12:2226.mkttime(将将时间结构构数据转换换成经过的的秒数) 相关函数:timee,ascctimee,gmttime,llocalltimee表头文件件:#inccludee定义函数: timme_t mktiime(sstrcuut tmm * ttimepptr);函数说明:mktiime()用来将参参数timmeptrr所指的ttm结构数数据转换成成从公元11970年年1月1日日0时0分分0 秒算算起至今的的UTC时时间所经过过的秒数。返回值:返返回经过的的秒数。范例:/* 用ttime()取得时时间(秒数数),利用用loca
16、altimme()转转换成sttructt tm 再利用mmktinne()将将struuct ttm转换成成原来的秒秒数*/#inclludemain()time_t tiimep;strcuut tmm *p;time(&timmep);printtf(“ttime() : %d n”,ttimepp);p=loccaltiime(&timeep);timepp = mmktimme(p);printtf(“ttime()-llocalltimee()-mktiime():%dn”,ttimepp);执行: timee():997494432977time()-llocalltimee()
17、-mktiime():974494322977.setttimeeofdaay(设置置目前时间间)相关函数:timee,ctiime,fftimee,getttimeeofdaay表头文文件: #inccludee#incllude定义函数:int setttimeoofdayy ( cconstt strruct timeeval *tv,consst sttructt timmezonne *ttz);函数说明:setttimeoofdayy()会把把目前时间间设成由ttv所指的的结构信息息,当地时时区信息则则设成tzz所指的结结构。详细细的说明请请参考geettimmeofdday()。
18、注意,只只有rooot权限才才能使用此此函数修改改时间。返回值:成成功则返回回0,失败败返回11,错误代代码存于eerrnoo。错误代代码 EPPERM 并非由rroot权权限调用ssettiimeoffday(),权权限不够。EEINVAAL 时区区或某个数数据是不正正确的,无无法正确设设置时间。8.timme(取得得目前的时时间)相关函数:ctimme,fttime,ggettiimeoffday表头文件:#inccludee定义函数:timee_t ttime(timee_t *t);函数说明:此函数会会返回从公公元19770年1月月1日的UUTC时间间从0时00分0秒算算起到现在在所经过的的秒数。如如果t 并并非空指针针的话,此此函数也会会将返回值值存到t指指针所指的的内存。返回值:成成功则返回回秒数,失失败则返回回(tiime_tt)-1)值,错误误原因存于于errnno中。范例:#inclludemain()int sseconnds= timee(tiime_tt*)NUULL);printtf(“%dn”,secoonds);执行 9.73E+08