2012-02-23 19 views

risposta

11

Prova:

use Date::Calc qw(:all); 

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

Ecco come l'ho sempre fatto. – tchrist

+0

È più semplice della mia versione DateTime, ma se usi già DateTime, probabilmente non vuoi inserire Date :: Calc solo per questo. Non è difficile da fare con DateTime. – cjm

+0

Grazie a tutti e due. Non mi dispiace aggiungere Date :: Calc all'elenco dei moduli. Suppongo che Date :: Calc segua la stessa regola ISO del "quarto giorno di gennaio" come DateTime su questo. Oh diamine. Vado RTFM. :-) Grazie ancora. –

12

Ecco un modo per farlo utilizzando solo 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"; 
Problemi correlati