2012-02-23 13 views

Odpowiedz

11

Spróbuj:

use Date::Calc qw(:all); 

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

Tak zawsze to robiłem. – tchrist

+0

To jest prostsze niż moja wersja DateTime, ale jeśli już używasz DateTime, prawdopodobnie nie chcesz pobierać Date :: Calc tylko po to. Nie jest to trudne z DateTime. – cjm

+0

Dziękuję wam. Nie mam nic przeciwko dodaniu Date :: Calc do listy modułów. Przyjmuję to Data: Calc podąża za tą samą regułą ISO "czwartego dnia stycznia" jako DateTime. Och, cholera. Pójdę do RTFM. :-) Dzięki jeszcze raz. –

12

Oto jeden ze sposobów, aby to zrobić używając tylko 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"; 
Powiązane problemy