自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Perl語言中處理Perl日期時間的技巧

開發(fā) 架構(gòu)
本文向大家簡單介紹一下處理Perl日期時間的技巧,Perl語言中表現(xiàn)日期的方法多種多樣,這里和大家分享一下,希望本文的介紹能讓你有所收獲。

本文和大家重點討論一下處理Perl日期時間的技巧,這里主要從兩個方面來向大家介紹,相信通過本文的學習你對Perl日期時間的處理方法有一定的認識。

處理Perl日期時間的技巧

Perl日期時間中表現(xiàn)日期的方法多種多樣:

“18 Jan 1973″ ,”18/01/1973″ ,”01/18/1973″ ,”Jan 18 1973″ ,”18-01-73″ ,”18-01-1973″ ,”01/73″,其中一些格局含義不清(如”01-06-1973″是表現(xiàn)6月1日呢,還是表現(xiàn)1月6日呢?) 假如不規(guī)定日期的表現(xiàn)情勢,是很難處理的。

想懂得”18 Jan 1973″和”6 Sep 1950″之間的差別,需要把它們轉(zhuǎn)換為數(shù)字表現(xiàn)。Unix 內(nèi)部應(yīng)用紀元秒表現(xiàn)時間。日期和時間加起來表現(xiàn)之自格林威志時間1970年1月1日午夜時分(紀元)到當前時刻之間的秒數(shù)。”18 Jan 1973″ (假定為午夜時分) 的紀元秒為96163200。在該系統(tǒng)中,午夜表現(xiàn)一天的開端時刻。

讓我們天生一個日期通過Perl中供給的gmtime函數(shù),你可以自己來驗證這點。給定一個用以表現(xiàn)自從紀元以來的秒數(shù)的整數(shù),通過gmtime函數(shù)可以盤算出代表相應(yīng)的日期和時刻,例如:
perl -le ‘print scalar gmtime 96163200′
Thu Jan 18 00:00:00 1973
調(diào)用 gmtime() 函數(shù),你會得到一系列值的列表,包含時,分,秒, 日期,月份,年份等等。
perl -le ‘print join(”,”, gmtime 96163200)’
0,0,0,18,0,73,4,17,0
前面3個0分辨表現(xiàn)秒,分,時。小時是從0-23,故下午是12時往后。第4個數(shù)表現(xiàn)該月中的天數(shù)(本例中為18號)。第5個數(shù)表現(xiàn)月份,從0開端(代表1月份)。之所以從0開端,是由于月份對應(yīng)著月份數(shù)組的下標:
@months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); $month = (gmtime 96163200)[4]; # “Jan”

◆年份 (本例中為73)的表現(xiàn)有點特別。它并不是年份的***兩位數(shù)字。它表現(xiàn)從1900年開端的年份。為什么要這樣表現(xiàn)呢?這是由于 C語言就是這樣處理的。Perl試圖使得其庫和系統(tǒng)調(diào)用盡量接近把持系統(tǒng)的處理方法。
所以,假如你想輸出4位數(shù)的年份,表現(xiàn)如下:
$year = (gmtime 96163200)[5] + 1900;
假如你不懂得這種處理方法,就會制作出Y2K標題,你也許會這樣寫:
$year = “19″ . (gmtime 96163200)[5];
# 出錯! 2000年將變?yōu)?9100

對于gmtime()函數(shù)的返回值還沒有先容完,還有4, 17, 和 0這3個數(shù)。它們分辨表現(xiàn)一星期中的第幾天 (星期日為0),一年中的第幾天(0 表現(xiàn)一年中的***天), 以及是否采用夏時制(表現(xiàn)不采用,正數(shù)表現(xiàn)采用,負數(shù)表現(xiàn)不可知)。
Perl中的time() 函數(shù)返回以紀元秒情勢表現(xiàn)確當前日期和時間。假如你打算把它轉(zhuǎn)換為字符串,就可應(yīng)用gmtime() 和localtime() 函數(shù):
$now = localtime(time());
($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime(time());
假如調(diào)用 localtime() 或gmtime() 時不帶參數(shù),它將自己調(diào)用time()
$now = localtime();
($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime();

Perl日期時間中常見的日期和時間把持

◆假如你打算盤算兩個時刻之間的時間段,只需將它們轉(zhuǎn)換為相應(yīng)的紀元秒,然后兩數(shù)相減即可:
$difference_in_seconds = $later_datetime -$earlier_datetime;

要把秒轉(zhuǎn)換為分,時,或天數(shù),只需要分辨將它們除以60, 3600 和 86400 即可:
$difference_in_minutes = $difference_in_seconds / 60;
$difference_in_hours = $difference_in_seconds / 3600;
$difference_in_day = $difference_in_seconds / 86400;

反過來做,你也可以答復如下標題:”4天后是幾號?”:
$then = time() + 86400 * 4;
print scalar localtime $then;
它給出的答案準確到秒。例如,假如4天后的紀元秒值為932836935, 你可以輸出日期的字符串如下;
Sat Jul 24 11:23:17 1999

◆假如你打算輸出那個日期的午夜時分 (如”Sat Jul 24 00:00:00 1999″) 應(yīng)用如下模塊:$then = $then - $then % 86400;      # 往掉那個日期的尾巴
類似地,你可以用四舍五進法,輸出最靠近午夜時分的日期:
$then += 43200; # add on half a day
$then = $then - $then % 86400;# truncate to the day

◆假如你的時區(qū)間隔GMT為相差偶數(shù)個小時,這就管用了。并不是所有的時區(qū)都是很輕易處理的。你所真正需要的是在你自己的時區(qū)內(nèi)盤算紀元秒,而不是在GMT中盤算。
Perl 中的名為Time::Local的模塊,可以供給兩個函數(shù) timelocal() 和timegm()。其返回值同 localtime() 和gmtime() 一樣。
 

  1. use Time::Local;  
  2. $then = time() + 4*86400;  
  3. $then = timegm localtime $then;  
  4. # local epoch seconds  
  5. $then -= $then % 86400;  
  6. # truncate to the day  
  7. $then = timelocal gmtime $then;  
  8. # back to gmt epoch seconds  
  9. print scalar localtime $then, “\n”;  

 

【編輯推薦】

  1. 解析兩大Perl時間函數(shù)區(qū)別
  2. 暢談Perl時間處理函數(shù)用法
  3. 解析Perl時間和日期模塊作用
  4. Perl基礎(chǔ) Perl數(shù)組學習指南
  5. Perl基礎(chǔ) 解析Perl標量和數(shù)組概念
責任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-07-21 09:50:51

Perl調(diào)試

2010-07-19 10:01:57

Perl函數(shù)

2010-07-20 10:23:24

Perl類

2010-07-19 09:16:47

Perl包

2010-07-20 10:02:15

Perl類

2010-07-13 15:34:09

Perl語言

2010-07-26 16:23:23

Perl語言

2010-07-20 11:37:00

Perl函數(shù)返回值

2010-07-23 13:23:10

Perl語言

2010-07-13 09:14:21

Perl時間處理函數(shù)

2010-07-15 14:17:15

2010-07-15 09:56:58

Perl語言

2010-07-13 10:05:54

Perl語言

2010-07-23 13:07:39

Perl

2010-07-23 13:46:27

Perl語言

2010-07-13 16:20:21

Perl 哈希表

2010-07-19 09:45:09

Perl數(shù)組

2022-02-22 19:04:01

Perl編程語言

2010-07-26 16:35:34

Perl性能

2010-07-13 15:43:57

Perl語言
點贊
收藏

51CTO技術(shù)棧公眾號