軟件測(cè)試 | 以編程方式對(duì)時(shí)間進(jìn)行編碼
問(wèn)題
你已經(jīng)決定你的應(yīng)用以某種有趣的方式來(lái)使用時(shí)間,現(xiàn)在你希望以特定格式生成特定的值。
解決方案
對(duì)這種工作而言,Perl是一件很棒的工作。你將需要Time::Local模塊來(lái)對(duì)Unix時(shí)間戳進(jìn)行某些處理,還需要POSIX模塊中的strftime。這兩個(gè)都是標(biāo)準(zhǔn)模塊。例4-3中的代碼演示了4中不同的格式以及如何計(jì)算它們。
例4-3:使用Perl對(duì)各種各樣的時(shí)間值進(jìn)行編碼
討論
你可以使用perldoc Time::Local或man strftime來(lái)找出有關(guān)于格式化時(shí)間的方法的更多信息。
警告:Perl在時(shí)間方面的古怪行為
盡管Perl非常靈活,而且無(wú)疑是完成這項(xiàng)工作的一件極好的工具,但它有自己的古怪行為。在編寫像這樣的代碼時(shí),請(qǐng)注意月份取值。因?yàn)橐恍┵M(fèi)解的原因,它們從0開(kāi)始對(duì)月份計(jì)數(shù)。也就是說(shuō),一月份對(duì)應(yīng)0,二月份對(duì)應(yīng)1,而不是一月份對(duì)應(yīng)1.日期則不是這樣。每個(gè)月的第一天對(duì)應(yīng)1。此外,你需要注意的編碼方式。年份從1900開(kāi)始計(jì)數(shù)。因此,1999年對(duì)應(yīng)99,而2008年對(duì)應(yīng)108.要獲得正確的年份取值,必須增加1900.盡管經(jīng)歷; 前年蟲(chóng)事件,但是至今仍有網(wǎng)站將日期顯示為6/28/108。