2011-08-11 67 views
3

是否有一個perl例程,我可以利用這將做到以下幾點?我正在尋找一個很好的例子。perl子程序獲取日期範圍

我希望能夠打印出基於範圍的天數列表。

作爲參數我希望能夠執行類似的操作: ./myperlscript -r 20110630 20110731(作爲一個例子,其中-r =範圍)。所以基本上,如果我可以把(2)這個格式的日期作爲輸入並打印那些日子。

20110630 
20110701 
20110702 
... 
.. 

回答

4

這應該讓你開始。您可能想要添加一些輸入驗證(即確保@ARGV的元素格式正確,並且第一個表示日期小於第二個等等,等等)。

use strict; 
use warnings; 
use DateTime; 

unless(@ARGV==2) 
{ 
    print "Usage: myperlscript first_date last_date\n"; 
    exit(1); 
} 

my ($first_date,$last_date)[email protected]; 

my $date=DateTime->new(
{ 
    year=>substr($first_date,0,4), 
    month=>substr($first_date,4,2), 
    day=>substr($first_date,6,2) 
}); 


while($date->ymd('') le $last_date) 
{ 
    print $date->ymd('') . "\n"; 
    $date->add(days=>1); 
} 

ETA:如果並不清楚發生了什麼事情,我們創建$dateDateTime對象,分析了年,月,日在$first_date給予這一點。然後,我們繼續打印不帶分隔符的年份,月份和日期($date->ymd('')),並將$date增加一天,直到我們處於$last_date

+0

這很酷。謝謝。我會測試它。 – jdamae

+0

偉大的小腳本。感謝您澄清使用情況。這非常方便。 – jdamae

+0

沒問題。我很高興它的工作。 :) – 2011-08-11 21:40:32