2012-02-23 22 views

cevap

11

Dene:

use Date::Calc qw(:all); 

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

Her zaman böyle yaptım. – tchrist

+0

Bu, DateTime sürümümden daha basittir, ancak zaten DateTime kullanıyorsanız, muhtemelen bunun için Tarih :: Calc'ı çekmek istemezsiniz. DateTime ile yapmak zor değil. – cjm

+0

İkinize de teşekkürler. Modüller listesine Date :: Calc ekleyerek aldırmam. Tarih :: Calc'ın bu "Date dördüncü günü" ISO kuralının aynısını, bu tarihte DateTime olarak izlerim. Oh heck. RTFM'ye gideceğim. :-) Tekrar teşekkürler. –

12

Burada sadece DateTime kullanarak bunu yapmak için tek yolu şudur:

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"; 
İlgili konular