2012-02-23 41 views

回答

11

嘗試:

use Date::Calc qw(:all); 

my $year = 2012; 
my $week = 14; 
my ($year2, $month, $day) = Monday_of_Week($week, $year); 
+1

這就是我一直這樣做的。 – tchrist 2012-02-23 23:52:18

+0

這比我的DateTime版本更簡單,但如果您已經使用DateTime,那麼您可能不希望爲此僅使用Date :: Calc。用DateTime並不是很難。 – cjm 2012-02-23 23:59:03

+0

謝謝你們兩位。我不介意將Date :: Calc添加到模塊列表中。我認爲Date :: Calc遵循與此相同的「1月第四日」ISO規則作爲DateTime。哦,哎呀。我會去RTFM。 :-) 再次感謝。 – 2012-02-24 01:11:34

12

這裏有一個辦法做到這一點只用DateTime

use DateTime; 

sub first_day_of_week 
{ 
    my ($year, $week) = @_; 

    # Week 1 is defined as the one containing January 4: 
    DateTime 
    ->new(year => $year, month => 1, day => 4) 
    ->add(weeks => ($week - 1)) 
    ->truncate(to => 'week'); 
} # end first_day_of_week 


# Find first day of second week of 2012 (2012-01-09): 
my $d = first_day_of_week(2012, 2); 

print "$d\n"; 
相關問題