2012-02-23 14 views

Respuesta

11

Probar:

use Date::Calc qw(:all); 

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

Así es como siempre lo he hecho. – tchrist

+0

Eso es más simple que mi versión de DateTime, pero si ya está usando DateTime, probablemente no quiera utilizar Date :: Calc solo para esto. No es tan difícil de hacer con DateTime. – cjm

+0

Gracias a los dos. No me importa agregar Date :: Calc a la lista de módulos. Supongo que Date :: Calc sigue la misma norma ISO del "cuarto día de enero" que DateTime en esto. Oh diablos Iré a RTFM. :-) Gracias de nuevo. –

12

He aquí una manera de hacerlo utilizando sólo 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"; 
Cuestiones relacionadas