[碼海拾貝 之Perl]擷取日期以及日期的加減

來源:互聯網
上載者:User

標籤:

前言

在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]擷取日期以及日期的加減

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.