在 perl 中處理時間,很多模組,很方便,但是剛開始玩的人,可能沒有發現合適的模組,所以使用起來感覺很麻煩。通常大家都 localtime 搞得大家都很火大。我有幸和大師學習了一下,給大家推薦一下乙個模組 strftime。
我們在推薦前,介紹一下 perl 下取時間的今生前世吧。以前我想大家都是使用的 localtime 來取得當地日期時間和日期。這個函式如果在標量環境時,會以字串的形式來傳回目前的時間和日期 。預設的 localtime 的函式是以 1970 到今天的秒來做整數計算的。預設這個程式會呼叫 time 的函式來給它提供乙個值。
使用方法:
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)=localtime;上面這個函式常用,但是返回值非常亂,可讀性非常不好,讓我們很容易出錯,所以我推薦 strftime 這個時間函式。當然,還有另乙個模組 datatime 也相當不錯。不過 strftime 非常象 linux 常用的 date 的命令。strftime 是 c 中 posix 的乙個功能函式。被包含進了 perl 中。好象 php 也是支援的$sec:秒
$min:分
$hour:小時
$mday:日
$mon:月
$year:目前的年減去1990,不是僅將19xx年的19去掉,因此不會有y2k的困擾。
$wday:每週的日期(如sunday是0)
$yday:每年的日期(如jan 1是0)
$isdst:如果日光節約時間使用則是正值,其它為0。
使用起來很容易,如下:
#!/usr/bin/perl會輸出use strict;
use warnings;
use posix qw
(strftime)
;print strftime(
"%y-%m-%d %h:%m:%s\n"
,localtime
(time))
;
2010-08-21 07:44:24
strftime 時間域
% h 小時(00..23)
% i 小時(01..12)
% k 小時(0..23)
% l 小時(1..12)
% m 分(00..59)
% p 顯示出am或pm
% r 時間(hh:mm:ss am或pm),12小時
% s 從2023年1月1日00:00:00到目前經歷的秒數
% s 秒(00..59)
% t 時間(24小時制)(hh:mm:ss)
% x 顯示時間的格式(%h:%m:%s)
% z 時區 日期域
% a 星期幾的簡稱( sun..sat)
% a 星期幾的全稱( sunday..saturday)
% b 月的簡稱(jan..dec)
% b 月的全稱(january..december)
% c 日期和時間( mon nov 8 14:12:46 cst 1999)
% d 乙個月的第幾天(01..31)
% d 日期(mm/dd/yy)
% h 和%b選項相同
% j 一年的第幾天(001..366)
% m 月(01..12)
% w 乙個星期的第幾天(0代表星期天)
% w 一年的第幾個星期(00..53,星期一為第一天)
% x 顯示日期的格式(mm/dd/yy)
% y 年的最後兩個數字( 1999則是99)
% y 年(例如:1970,1996等)
常用的例項
得到日期的全部
perl -mposix -le 'print strftime "%c", localtime();'sat 21 aug 2010 07:54:34 am cst
得到普通的指定的日期
perl -mposix -sat 21 aug 2010 07:54:11 cstle'print strftime "%a %d %b %y %h:%m:%s %z", localtime();'
得到乙個小時以前的時間
perl -mposix -sat 21 aug 2010 06:55:54 am cstle'print strftime "%c", localtime(time()-3600);'
得到一天前的時間
perl -mposix -fri 20 aug 2010 07:56:36 am cstle'print strftime "%c", localtime(time()-86400);'
use strict;
use posix;
use warnings;
use date::tie;
my $curr_date = new date::tie ->new(
year=>strftime("%y",localtime($arr[9])),
month=>strftime("%m",localtime($arr[9])),
day=>strftime("%d",localtime($arr[9])),
hour=>strftime("%h",localtime($arr[9])),
minute=>strftime("%m",localtime($arr[9])),
second=>strftime("%s",localtime($arr[9])),
);$curr_date-> --;
my $last_date = $curr_date->.$curr_date->.$curr_date->."_".$curr_date->.$curr_date->.$curr_date->;
Perl 處理時間的小技巧 strftime
在 perl 中處理時間,很多模組,很方便,但是剛開始玩的人,可能沒有發現合適的模組,所以使用起來感覺很麻煩.通常大家都 localtime 搞得大家都很火大.我有幸和大師學習了一下,給大家推薦一下乙個模組 strftime.我們在推薦前,介紹一下 perl 下取時間的今生前世吧.以前我想大家都是使...
時間管理的小技巧
這裡分享一下我現在用的時間管理小技巧。看過一些書,覺得很多都是講理論性的東西,感覺說的都是因為我生也有涯,事情無限多,所以要將有限的生命集中在對自己最重要的事情上,隨之而來的就是 1 先做重要且緊急的 2 再做重要不緊急的 3 再做緊急不重要的 4 最後再做不緊急也不重要的。那麼現在問題來了,什麼事...
時間管理的小技巧(續)
接著前面時間管理小技巧裡的討論,說說拖沓的問題,就我個人來說,拖沓主要由兩個原因組成 1.這個事情實在是不情願做,比如跟客戶吵架 2.今天很累,沒心思幹活 對於第一點,最好就是授權出去,讓別人做,例如推給老闆,例如指派下屬解決。如果實在是逃不掉,就盡早做,所謂早死早超生。對於第二點,如果這個事情處理...