轉(zhuǎn)載
from http://blog.163.com/duanpeng3@126/blog/static/885437352010116104157332/
perl有兩個取得時間的函數(shù):localtime和gmtime
兩個函數(shù)的用法一樣,區(qū)別在于localtime為取得本地時間, gmtime格林威治時間。
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
其中:
$sec代表秒數(shù)[0,59]
$min代表分?jǐn)?shù)[0,59]
$hour代表小時數(shù)[0,23]
$mday代表是在這個月的第幾天[1,31]
$mon代表月數(shù)[0,11],要將$mon加1之后,才能符合實際情況。
$year從1900年算起的年數(shù),所以要獲得當(dāng)前年就需要在$year的基礎(chǔ)上加上1900
$wday從星期六算起,代表是在這周中的第幾天[0-6]
$yday從一月一日算起,代表是在這年中的第幾天[0,364]
$isdst只是一個flag
下面是一個獲取當(dāng)前系統(tǒng)時間的子函數(shù):
sub getTime
{
#time()函數(shù)返回從1970年1月1日起累計秒數(shù)
my $time =
shift || time();
my
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime($time);
$mon
++;
$sec =
($sec<10)?"0$sec":$sec;#秒數(shù)[0,59]
$min =
($min<10)?"0$min":$min;#分?jǐn)?shù)[0,59]
$hour =
($hour<10)?"0$hour":$hour;#小時數(shù)[0,23]
$mday =
($mday<10)?"0$mday":$mday;#這個月的第幾天[1,31]
$mon =
($mon<9)?"0".($mon+1):$mon;#月數(shù)[0,11],要將$mon加1之后,才能符合實際情況。
$year+=1900;#從1900年算起的年數(shù)
#$wday從星期六算起,代表是在這周中的第幾天[0-6]
#$yday從一月一日算起,代表是在這年中的第幾天[0,364]
# $isdst只是一個flag
my $weekday
= ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')[$wday];
return {
'second' => $sec,
'minute' => $min,
'hour' =>
$hour,
'day'
=> $mday,
'month' => $mon,
'year' =>
$year,
'weekNo' => $wday,
'wday' =>
$weekday,
'yday' =>
$yday,
'date' =>
"$year$mon$mday"
};
}
通過下面的方法調(diào)用:
my $date = &getTime();#獲取當(dāng)前系統(tǒng)時間的Hash
my $ymd =
$date->{date};#獲取yyyymmdd這樣的日期
my $year=$date->{year};#獲取年
my $month=$date->{month};#獲取月
my $day=$date->{day};#獲取日
獲取時分秒類似。