| 订阅 | 在线投稿
分享
 
 
 

在C语言中如何处理时间和日期

2008-06-01 02:07:10 编辑來源:互联网 国际版 评论
 
 
本文为【在C语言中如何处理时间和日期】的汉字拼音对照版显示拼音
  ChUCk Allison shiyanhuchengsheng Latter Day jiaotangzongbuxiayesujiaotangjiazulishiyanjiuchuderuanjiantixishejishitayongyoushuxuexueshiheshuxueshuoshixueweitacong1975nianqikaishibianchengcong1984nianqitakaishicongshicyuyandejiaoxuehekaifatamuqiandeaihaoshimianxiangduixiangdejishujiqijiaoyutashiX3J16ANSI C ++biaozhunhuaweiyuanhuideyiyuan

  dabufendecaozuoxitongyoubanfadedaodangqianderiqiheshijiantongguodingyizaitime.hdekuhanshuANSI Cnengyixuduobutongdexingshidedaozhegexinxihanshutimefanhuiyigeleixingweitime_tdezhitongchangweilonggaihanshuzaiyunxingqijianduidangqianderiqiheshijianjinxingbianmaranhounikeyijiangzhegefanhuizhichuandigeiqitanengduigaizhijinxingjiemahegeshihuadehanshu

  Listing 1 zhongdechengxu使shiyonghanshutimelocaltimehestrftimeyibutongdexingshishuchudangqianderiqiheshijianhanshulocaltimebayijingbianmadeshijianjiemachengruxiadestruct

  struct tm

  {

  int tm_sec; /* (0 - 61) */

  int tm_min; /* (0 - 59) */

  int tm_hour; /* (0 - 23) */

  int tm_mday; /* (1 - 31) */

  int tm_mon; /* (0 - 11) */

  int tm_year; /* past 1900 */

  int tm_wday; /* (0 - 6) */

  int tm_yday; /* (0 - 365) */

  int tm_isdst; /* daylight savings flag */

  };

  meicidangnitiaoyonglocaltimedeshihoutahuichongxieyigejingtaidejiegoubingfanhuigaijiegoudedizhiyincitongyishikezaiyigechengxuzhongzhinengqudeyigezheyangdejiegouerbunengzuomingxiandekaobeihanshuctimefanhuiyigezhixiangjingtaizifuchuandezhizhengaizifuchuanyibiaozhundegeshibaohanlewanzhengdeshijianheriqistrftimegenjuyonghudezhidinggeshigeshihuazifuchuanliru%AdaibiaoyizhouzhongmeiyitiandemingchengTable 1liechulegeshimiaoshufudewanzhengliebiao

  shijian/riqiyunsuan

  tongguogaibiantmjiegoulidezhikeduishijian/riqijinxingyunsuanListing 2 zhongdechengxuzhanshileruhejisuanjianglaimoutianderiqiheyimiaoweidanweisuojisuanchudechengxuzhixingshijianzhuchonghanshutimedeyufashenshutime_tyoudizhichuanrubingfeizuoweihanshudefanhuizhihanshumktimegaibiantmjiegoudezhiyi便bianriqiheshijianzaiyigeheshidefanweineizhihouday-of-week (tm_wday)heday-of-year (tm_yday)yujinxingxiangyingdegengxinmktimejiangtmjiegouzhongriqiheshijiandezhizhiyuheshidefanweizhineixiangyingdegengxinday of week (tm-wday)heday of year (tm-yday)dezhizhezhongqingkuangfashengzaidangyigeriqichaochulenideshixiannenggouzhichidefanweideshihouliruwodeMS-DOSdebianyiqibunengbianma1970nian1yuefenzhiqianderiqihanshuasctimefanhuitmshenshusuomiaoshushijiandebiaozhunzifuchuanyincictime (&tval)yuasctime (localtime(&tval)shixiangdengde)hanshudifftimefanhuiyongmiaozuodanweidelianggetime_tdecha

  jiaruxuyaochulichaochuxitongfanweideriqihuozhexuyaojisuanlianggeriqidejiangeyoubushiyongmiaolaizuodanweinanixuyaoshejizijidedatebianmaListing 3 dao Listing 5 zhongdeyingyongchengxutongguo使shiyongyigejiandandemonth-day-yearjiegouzhanshilequedinglianggeriqijiangedenianshuyuefenshuhetianshudejishuriqidexiangjianjiuxiangnizaixiaoxuelizuodejianfanayanglirushouxianjinxingtianshudexiangjianjiaruxuyaojiuxiangyuefenshujieweiyicileituizhuchongtiaoguodenianfendoubeijisuanjinquleweilejianlueqijiandate_intervalhanshujiasheriqidoushiyouxiaodebingqiediyigeriqizaidiergeriqizhiqianhanshufanhuiyigezhixiangjingtaiDatejiegoudezhizhengaijiegoubaohanlewomenxiangyaodedaan

  wenjianshijian/riqichuo

  daduoshucaozuoxitongweiwenjianweihushijian/riqichuozhishaoninengdezhiyigewenjianzuihoubeixiugaideshijianchangyongdemakegongju使shiyongzheyixinxilaijuedingyigewenjianshifouxuyaobeichongxinbianyihuozheyigeyingyongchengxushifouxuyaobeichongxinlianjieyouyuwenjianxitongzaibutongpingtaishangyousuobutongmeiyoushenmetongyongdehanshudedaoyigewenjiandeshijian/riqichuoyinciANSI biaozhunmeiyoudingyizheyangdehanshuranerdaduoshuliuxingdecaozuoxitongbaokuoMS-DOSheVAX/VMStigongleUNIXhanshustatgaihanshufanhuixiangguandewenjianxinxibaokuoyongtime_tbiaoshidezuihouxiugaishijian

  Listing 6 zhongdechengxu使shiyongstathedifftimelaiquedingshifoutime1.cbitime2.cgengxinlirushifouzuijinbeixiugaiguo

  jiarunixuyaogengxinyigewenjiandeshijian/riqichuodaodangqianshijiankejiandandechongxiewenjiandediyigezijiesuiranshijineirongbingweigaibiandannidewenjianxitonghuirenweiwenjianyijingbeigaibianlebingqiehuixiangyingdegengxinshijian/riqichuozhidaonidewenjianxitongzaiVAX/VMSxiadangnidedaoyigewenjiandexinbanbendeshihoujiudebanbenrenghuibeibaoliuzhezhongjishujiaozuo"''touching''yigewenjian"Listing 7 zhongtouchdeshixianzaizhidingwenjianbucunzaideshihouhuichuangjianyigexinwenjianzhuchongwenjianyi"binary"moshidakaizaidakaimoshizifuchuanzhongyouzifubjueding-zaijianglaidezhuanlanzhongwohuijutitaolunwenjianchulidewenti biao1strftimedegeshimiaoshufu

  Code Sample Output

  ---------------------------------------------

  %a Wed

  %A Wednesday

  %b Oct

  %B October

  %c Wed Oct 07 13:24:27 1992

  %d 07 (day of month [01-31])

  %H 13 (hour in [00-23])

  %I 01 (hour in [01-12])

  %j 281 (day of year [001-366])

  %m 10 (month [01-12])

  

   %M 24 (minute [00-59])

  %p PM

  27 (second [00-59] )

  %U 40 (Sunday week of year [00-52])

  %w 3 (day of week [0-6])

  %W 40 (Monday week of year [00-52])

  %x Wed Oct 7, 1992

  %X 13:24:27

  %y 92

  %Y 1992

  %Z EDT (daylight savings indicator)原文
 
 
 ChUCk Allison 是盐湖城圣 Latter Day 教堂总部下耶稣教堂家族历史研究处的软件体系设计师。他拥有数学学士和数学硕士学位。他从1975年起开始编程,从1984年起他开始从事c语言的教学和开发。他目前的爱好是面向对象的技术及其教育。他是X3J16,ANSI C ++标准化委员会的一员。   大部分的操作系统有办法得到当前的日期和时间。通过定义在time.h的库函数,ANSI C能以许多不同的形式得到这个信息。函数time返回一个类型为time_t的值(通常为long),该函数在运行期间对当前的日期和时间进行编码。然后你可以将这个返回值传递给其他能对该值进行解码和格式化的函数。   Listing 1 中的程序使用函数time,localtime和strftime以不同的形式输出当前的日期和时间。函数localtime把已经编码的时间解码成如下的struct: struct tm {  int tm_sec; /* (0 - 61) */  int tm_min; /* (0 - 59) */  int tm_hour; /* (0 - 23) */  int tm_mday; /* (1 - 31) */  int tm_mon; /* (0 - 11) */  int tm_year; /* past 1900 */  int tm_wday; /* (0 - 6) */  int tm_yday; /* (0 - 365) */  int tm_isdst; /* daylight savings flag */ };   每次当你调用localtime的时候,它会重写一个静态的结构并返回该结构的地址(因此同一时刻在一个程序中只能取得一个这样的结构,而不能做明显的拷贝)。函数ctime返回一个指向静态字符串的指针,该字符串以标准的格式包含了完整的时间和日期。strftime根据用户的指定格式格式化字符串(例如,%A代表一周中每一天的名称)。Table 1列出了格式描述符的完整列表。   时间/日期运算   通过改变tm结构里的值,可对时间/日期进行运算。Listing 2 中的程序展示了如何计算将来某天的日期和以秒为单位所计算出的程序执行时间。注重函数time的语法(参数time_t由地址传入,并非作为函数的返回值)。函数mktime改变tm结构的值,以便日期和时间在一个合适的范围内,之后day-of-week (tm_wday)和day-of-year (tm_yday)域进行相应的更新。mktime将tm结构中日期和时间的值置于合适的范围之内,相应的更新day of week (tm-wday)和day of year (tm-yday)的值。这种情况发生在当一个日期超出了你的实现能够支持的范围的时候。例如,我的MS-DOS的编译器不能编码1970年1月份之前的日期。函数asctime返回tm参数所描述时间的标准字符串(因此ctime (&tval)与asctime (localtime(&tval)是相等的)。函数difftime返回用秒做单位的两个time_t的差。   假如需要处理超出系统范围的日期,或者需要计算两个日期的间隔又不是用秒来做单位,那你需要设计自己的date编码。Listing 3 到 Listing 5 中的应用程序通过使用一个简单的month-day-year结构,展示了确定两个日期间隔的年数、月份数和天数的技术。日期的相减就像你在小学里做的减法那样(例如,首先进行天数的相减,假如需要就向月份数借位,以此类推)。注重跳过的年份都被计算进去了。为了简略起见,date_interval函数假设日期都是有效的,并且第一个日期在第二个日期之前。函数返回一个指向静态Date结构的指针,该结构包含了我们想要的答案。   文件时间/日期戳   大多数操作系统为文件维护时间/日期戳。至少你能得知一个文件最后被修改的时间。(常用的make工具使用这一信息来决定一个文件是否需要被重新编译,或者一个应用程序是否需要被重新连接)。由于文件系统在不同平台上有所不同,没有什么通用的函数得到一个文件的时间/日期戳,因此ANSI 标准没有定义这样的函数。然而,大多数流行的操作系统(包括MS-DOS和VAX/VMS)提供了UNIX函数stat,该函数返回相关的文件信息,包括用time_t表示的最后修改时间。   Listing 6 中的程序使用stat和difftime来确定是否time1.c比time2.c更新(例如,是否最近被修改过)。   假如你需要更新一个文件的时间/日期戳到当前时间,可简单的重写文件的第一个字节。虽然实际内容并未改变,但你的文件系统会认为文件已经被改变了,并且会相应的更新时间/日期戳。(知道你的文件系统!在VAX/VMS下,当你得到一个文件的新版本的时候,旧的版本仍会被保留)。这种技术叫做"''touching''一个文件"。Listing 7 中touch的实现在指定文件不存在的时候会创建一个新文件。注重文件以"binary"模式打开(在打开模式字符串中由字符b决定-在将来的专栏中我会具体讨论文件处理的问题)。 表1:strftime的格式描述符 Code Sample Output --------------------------------------------- %a Wed %A Wednesday %b Oct %B October %c Wed Oct 07 13:24:27 1992 %d 07 (day of month [01-31]) %H 13 (hour in [00-23]) %I 01 (hour in [01-12]) %j 281 (day of year [001-366]) %m 10 (month [01-12]) %M 24 (minute [00-59]) %p PM 27 (second [00-59] ) %U 40 (Sunday week of year [00-52]) %w 3 (day of week [0-6]) %W 40 (Monday week of year [00-52]) %x Wed Oct 7, 1992 %X 13:24:27 %y 92 %Y 1992 %Z EDT (daylight savings indicator)
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
游乐场的可爱性感(3)
游乐场的可爱性感(2)
玛旁雍错之景
华亿农庄
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有