中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Perl語言中處理Perl日期時間的方法

發布時間:2021-07-21 23:35:39 來源:億速云 閱讀:402 作者:chen 欄目:開發技術

這篇文章主要講解了“Perl語言中處理Perl日期時間的方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Perl語言中處理Perl日期時間的方法”吧!

處理Perl日期時間的技巧

Perl日期時間中表現日期的方法多種多樣:

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

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

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

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

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

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

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

要把秒轉換為分,時,或天數,只需要分辨將它們除以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″) 應用如下模塊:$then = $then - $then % 86400;      # 往掉那個日期的尾巴
類似地,你可以用四舍五進法,輸出最靠近午夜時分的日期:
$then += 43200; # add on half a day
$then = $then - $then % 86400;# truncate to the day

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

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

感謝各位的閱讀,以上就是“Perl語言中處理Perl日期時間的方法”的內容了,經過本文的學習后,相信大家對Perl語言中處理Perl日期時間的方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长丰县| 公安县| 钟祥市| 霍州市| 红安县| 长兴县| 衢州市| 红河县| 钟祥市| 大埔区| 高安市| 阿合奇县| 漳浦县| 什邡市| 大兴区| 龙泉市| 双峰县| 黎平县| 兴山县| 太和县| 来宾市| 平塘县| 禄劝| 平利县| 崇文区| 壶关县| 唐海县| 视频| 耿马| 揭阳市| 泊头市| 大同县| 犍为县| 霸州市| 东乡| 南京市| 酒泉市| 永城市| 北京市| 井研县| 黄陵县|