標籤:
前言
在Perl 中, 不安裝其他模組的狀況下, 可以使用 localtime 來擷取當地日期和時間。
在標量上下文中, 返回的是字串格式。
my $localtime = localtime();print "\n$localtime\n";
返回:
Thu Jan 1 18:17:56 2015
在列表上下文中, 返回的是描述目前時間的一個元素列表
my ($sec,$min,$hour,$mday,$mon,$year_off,$wday,$yday,$isdat) = localtime();
$sec 秒,0 ~ 59
$min 分,0 ~ 59
$hour 時,0 ~ 23
$mday 月份中的日期, 1 ~ 2 8、2 9、3 0或3 1
$mon 年份中的月份, 0 ~ 11(這裡請特別要小心)
$year_off 1900年以來的年份。將1900加上這個數字,得出正確的4位元年份
$wday 星期幾,0 ~ 6
$yday 一年中的第幾天,0 ~ 364或365
$isdst 如果夏令時有效,則為真
所以通過這種方式獲得的日期:
年份需要加 1900: $year += 1900;
月份需要加一 : $mon += 1;
幾個方法
得到當前日期:
sub get_current_day{my($sec,$min,$hour,$day,$mon,$year) = localtime(); $mon++;$year += 1900;my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day);return $data_now;}
如果要得到上一天的日期, 不能只是簡單的在上面的日期基礎上減一, 如果這樣, 遇到跨月就會有問題:
正確的是 時間減去 86400秒(24 小時)
sub get_last_day{my($sec,$min,$hour,$day,$mon,$year) = localtime(time()-86400); $mon++;$year += 1900;my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day);return $data_now;}
得到上幾天的日期:
sub get_last_number_day{my($lastNumber) = @_; my($sec,$min,$hour,$day,$mon,$year) = localtime(time()-86400*$lastNumber); $mon++;$year += 1900;my $data_now = sprintf("%04d/%02d/%02d",$year,$mon,$day);return $data_now;}
[碼海拾貝 之Perl]擷取日期以及日期的加減