Perl中的10個(gè)操作日期和時(shí)間的CPAN模塊介紹
能夠操控日期和時(shí)間對(duì)于大多數(shù)編程語(yǔ)言來(lái)說(shuō)是基本的能力,Perl也不例外。但是在碰到與時(shí)間相關(guān)的更加復(fù)雜的處理時(shí),Perl自帶的功能常常就顯得力不從心了。在這種情況下,上Perl綜合典藏網(wǎng)(CPAN)看看是一個(gè)好主意,上面有很多隨時(shí)可以使用的Perl模塊,讓開(kāi)發(fā)人員能夠有效地進(jìn)行日期和時(shí)間操作?;c(diǎn)時(shí)間瀏覽這個(gè)網(wǎng)站看看是否能夠找到一些在下一個(gè)項(xiàng)目里用得上的東西是值得的。
本文列出了Perl CPAN上用來(lái)操控日期和時(shí)間的10個(gè)最有趣的模塊,為您下一次轉(zhuǎn)化時(shí)區(qū)和計(jì)算兩個(gè)時(shí)間戳之間的秒數(shù)打下了基礎(chǔ),現(xiàn)在我們就來(lái)看看它們。
注:您可以根據(jù)下面提供的方法直接從Internet上安裝CPAN模塊。
Date::Manip
這個(gè)模塊被稱(chēng)為日期操控模塊的“瑞士軍刀”。它提供的例程可以用來(lái)分析和比較日期,提取日期信息,確定日期信息,確定日期/時(shí)間偏量,使用重復(fù)日期和時(shí)間,以及在不同語(yǔ)言里使用日期等。但是它運(yùn)行起來(lái)要比其他更加專(zhuān)業(yè)的模塊慢。
當(dāng)您需要一個(gè)通用的日期操控模塊且不特別關(guān)心性能的時(shí)候使用這個(gè)模塊。
DateTime
這個(gè)模塊是Perl的DateTime項(xiàng)目的一部分,它提供了一個(gè)基類(lèi),用以“代表日期/時(shí)間的組合”。它是創(chuàng)建自定義日期(Date)對(duì)象的最方便的方法,并且包括了用于分析、格式化、計(jì)算持續(xù)時(shí)間和操控時(shí)區(qū)的模塊。
一般來(lái)說(shuō),在需要本地化或者定義用于時(shí)間信息的自定義存儲(chǔ)容器的時(shí)候,您要將這個(gè)模塊用作創(chuàng)建與日期相關(guān)的新對(duì)象。
Time::Format
在需要重新格式化日期和時(shí)間值的時(shí)候,這個(gè)模塊是無(wú)可匹敵的——它支持大量格式化代碼,能夠大幅改變?nèi)掌诤蜁r(shí)間的外觀。它同時(shí)接受DateTime對(duì)象和Date::Manip字符串,還為加入的控件提供了到POSIX的strftime()函數(shù)的接口。
當(dāng)您需要格式化日期和時(shí)間值的時(shí)候(通常是在將它們顯示給應(yīng)用程序用戶(hù)之前)使用這個(gè)模塊。
Time::Interval
這個(gè)模塊對(duì)于處理時(shí)間間隔十分有用。它提供的例程可以計(jì)算兩個(gè)時(shí)間戳之間的日、小時(shí)、分鐘和秒的總數(shù)。它還可以輕松地將時(shí)長(zhǎng)轉(zhuǎn)換成不同的時(shí)間單位,例如秒、小時(shí),或者分鐘。
當(dāng)您需要計(jì)算兩個(gè)日期值之間所流逝的時(shí)間時(shí)使用這個(gè)模塊。
Date::Convert
這個(gè)模塊提供的例程用于在不同的日期格式(陽(yáng)歷、儒略歷、猶太歷、伊斯蘭歷和絕對(duì)歷)之間轉(zhuǎn)換。它還提供掛鉤用以輕松擴(kuò)展到新的日歷格式。
當(dāng)您需要從一個(gè)日歷格式轉(zhuǎn)換到另外一個(gè)日歷格式的時(shí)候使用這個(gè)模塊。
Benchmark
這個(gè)模塊允許您多次運(yùn)行同一段代碼,計(jì)算執(zhí)行每次運(yùn)行的時(shí)間并返回所取得的平均值。它還可以被用來(lái)查看一個(gè)代碼塊可以在固定的時(shí)間窗里運(yùn)行多少次。
在進(jìn)行性能基準(zhǔn)測(cè)試,測(cè)量某個(gè)代碼塊運(yùn)行的速度,以及收集精確的讀數(shù)以指導(dǎo)您進(jìn)行優(yōu)化的時(shí)候使用這個(gè)模塊。
Time::Normalize
這個(gè)模塊提供的例程用來(lái)把任意日期和時(shí)間值格式化成一個(gè)統(tǒng)一的、標(biāo)準(zhǔn)的表示,它然后可以被用來(lái)進(jìn)行計(jì)算或者保存。它會(huì)對(duì)輸入的內(nèi)容進(jìn)行錯(cuò)誤檢查,然后以清楚的格式返回獨(dú)立的時(shí)間和/或日期組件。
當(dāng)您懷疑輸入的日期有錯(cuò)誤并需要在數(shù)據(jù)庫(kù)或者應(yīng)用程序里使用它之前“清理干凈”的時(shí)候使用這個(gè)模塊。
Regexp::Common::time
這個(gè)模塊會(huì)創(chuàng)建可以用被用來(lái)分析日期和時(shí)間的正則表達(dá)式。它支持同時(shí)使用精確的規(guī)則和復(fù)雜的模糊邏輯從字符串值捕捉日期模式。
用這個(gè)模塊從人們易于理解的字符串識(shí)別和提取日期信息,并將它轉(zhuǎn)換成機(jī)器可讀的格式(例如ISO 8601)。
MySQL::DateFormat
這個(gè)模塊提供的例程可以把日期和數(shù)字在MySQL的YYYY-MM-DD格式和人們易于理解的字符串之間來(lái)回轉(zhuǎn)換。在從/到MySQL數(shù)據(jù)庫(kù)取回/添加含有日期信息的記錄時(shí)這個(gè)模塊十分有用。
為了以可讀性更強(qiáng)的方式顯示,或者在將它插入MySQL數(shù)據(jù)庫(kù)之前修改用戶(hù)提供的日期值,您可以使用這個(gè)模塊來(lái)重新格式化MySQL的日期/時(shí)間字符串。
Net::Time
這個(gè)模塊提供了一個(gè)從遠(yuǎn)程客戶(hù)端取回日期和時(shí)間信息的客戶(hù)端接口。如果您的應(yīng)用程序要總是確保知道當(dāng)前的日期和時(shí)間,以保證系統(tǒng)不被黑客窺探,這就顯得尤其有用。
在通過(guò)TCP網(wǎng)絡(luò)從遠(yuǎn)程主機(jī)上取回日期/時(shí)間字符串的時(shí)候要使用這個(gè)模塊。
使用示例:
取得某一日期時(shí)間的信息
方法一
use POSIX qw(strftime);
localtime(time() - 24*60*60)
strftime "%Y%m%d%k%M%S",localtime $^T;
方法二
use 5.010;
use POSIX qw(strftime);
# These are core modules in Perl 5.10 and newer
use Time::Piece;
use Time::Seconds;
my $yesterday = localtime() - ONE_DAY;
say $yesterday->strftime('%b %d %Y');
相關(guān)文章
Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能
這篇文章主要介紹了Perl腳本實(shí)現(xiàn)檢測(cè)主機(jī)心跳信號(hào)功能,本文代碼也可作為perl串口通信的實(shí)例,需要的朋友可以參考下2014-10-10Perl刪除前導(dǎo)和拖尾空白(刪除左右空格、空白字符)
這篇文章主要介紹了Perl刪除前導(dǎo)和拖尾空白(刪除左右空格、空白字符),本文給出了多個(gè)方法實(shí)現(xiàn)解決這個(gè)需求,需要的朋友可以參考下2015-06-06Perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié)
這篇文章主要介紹了Perl信號(hào)處理學(xué)習(xí)簡(jiǎn)單小結(jié),本文著重列出了Unix下常見(jiàn)的處理信號(hào)表,需要的朋友可以參考下2014-09-09Windows和Linux系統(tǒng)下perl連接SQL Server數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Windows和Linux系統(tǒng)下perl連接SQL Server數(shù)據(jù)庫(kù)的方法,本文詳細(xì)的講解了Windows和Linux系統(tǒng)中perl如何連接Microsoft SQL Server數(shù)據(jù)庫(kù),需要的朋友可以參考下2014-10-10Perl實(shí)現(xiàn)刪除Windows下的圖片緩存縮略圖Thumbs.db
這篇文章主要介紹了Perl實(shí)現(xiàn)刪除Windows下的圖片緩存縮略圖Thumbs.db,本文實(shí)現(xiàn)了批量刪除Thumbs.db文件,需要的朋友可以參考下2014-12-12