perl有两个取得时间的函数:localtime和gmtime
转发用于记载,方便以后使用.原链接:https://www.cnblogs.com/hjj404/p/7992254.html,谢谢作者分享
两个函数的用法一样,区别在于localtime为取得本地时间, gmtime格林威治时间。
(\(sec,\)min,\(hour,\)mday,\(mon,\)year,\(wday,\)yday,$isdst) = localtime(time);
其中:
-
$sec代表秒数[0,59]
-
$min代表分数[0,59]
-
$hour代表小时数[0,23]
-
$mday代表是在这个月的第几天[1,31]
-
\(mon代表月数[0,11],要将\)mon加1之后,才能符合实际情况。
-
\(year从1900年算起的年数,所以要获得当前年就需要在\)year的基础上加上1900
-
$wday从星期六算起,代表是在这周中的第几天[0-6]
-
$yday从一月一日算起,代表是在这年中的第几天[0,364]
-
$isdst只是一个flag
下面是一个获取当前系统时间的子函数:
sub getTime
{
#time()函数返回从1970年1月1日起累计秒数
my $time = shift || time();
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time);
$mon ++;
$sec = ($sec<10)?"0$sec":$sec;#秒数[0,59]
$min = ($min<10)?"0$min":$min;#分数[0,59]
$hour = ($hour<10)?"0$hour":$hour;#小时数[0,23]
$mday = ($mday<10)?"0$mday":$mday;#这个月的第几天[1,31]
$mon = ($mon<9)?"0".($mon+1):$mon;#月数[0,11],要将$mon加1之后,才能符合实际情况。
$year+=1900;#从1900年算起的年数
#$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"
};
}
通过下面的方法调用:
my $date = &getTime();#获取当前系统时间的Hash
my $ymd = $date->{date};#获取yyyymmdd这样的日期
my \(year=\)date->{year};#获取年
my \(month=\)date->{month};#获取月
my \(day=\)date->{day};#获取日
获取时分秒类似。