2012-02-23 49 views

Trả lời

11

Hãy thử:

use Date::Calc qw(:all); 

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

Đó là cách tôi luôn làm. – tchrist

+0

Điều đó đơn giản hơn phiên bản DateTime của tôi, nhưng nếu bạn đã sử dụng DateTime, có thể bạn không muốn kéo Date :: Calc chỉ cho điều này. Nó không phải là _that_ khó làm với DateTime. – cjm

+0

Cảm ơn cả hai. Tôi không nhớ thêm Ngày :: Calc vào danh sách mô-đun. Tôi lấy nó ngày tháng :: Calc tuân thủ quy tắc ISO "ngày thứ tư của tháng 1" giống như DateTime về điều này. Oh heck. Tôi sẽ đi RTFM. :-) Cảm ơn một lần nữa. –

12

Dưới đây là một cách để làm điều đó chỉ sử dụng 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"; 
Các vấn đề liên quan