2014-03-04 41 views
1

我遇到了一個奇怪的問題。 我有日期的形式2月25日星期二00:20:13 2014。 我的任務是計算星期數和星期幾。 我嘗試以下Perl工作週轉換不正確

use Time::Piece; 

my $date="Tue Feb 25 00:20:13 2014"; 
my $db_date=Time::Piece->strptime($date, "%a %b %d %H:%M:%S %Y"); 
my $ww=$db_date->strftime("%W.%w-%Y); 
print $ww; 

當我運行該腳本,我得到的輸出

08.2-2014 

這是不對的,預期的輸出是

09.2-2014 

我想知道在哪裏做我出錯了? 請求幫助...

回答

3

您正在使用「%W」strftime()轉換。 Time :: Piece沒有指定「%W」的含義,但等效C函數的文檔說明「%W」從包含星期一的第一週開始計數。這聽起來像是你想要ISO 8601星期編號,該編號從包含至少四天的第一週開始計算,在這種情況下,「%V」轉換應該做你想要的。

+0

嗨@Mark ..我嘗試使用「%V」,但我沒有得到任何輸出顯示。它只是空白。 – damseldeebi

+0

奇數。 '$ ww = $ db_date-> strftime(「%V.%w-%Y」);'適合我,在Linux上使用Perl 5.16.3。 – Mark

+0

我使用Padre IDE,Perl <5.16.3> – damseldeebi