期間内の日付が、年初から第何週にあたるのか、また何曜日にあたるのか簡単に調べる
以下の記録を組み合わせただけ。
#!/bin/env perl use strict; use warnings; use Date::Calc qw(Day_of_Week Week_Number Day_of_Year); use Date::Simple; my($start, $end) = @ARGV; my $start_day = Date::Simple->new($start); # 片端入れで動作するために、1日プラスしている。 my $term = Date::Simple::date($end) - Date::Simple::date($start) + 1; for (my $i = 0; $i < $term; $i++) { my $target_day = $start_day + $i; my $year = $target_day->year; my $month = $target_day->month; my $day = $target_day->day; print $target_day, "\t", Week_Number($year, $month, $day), "\t", Day_of_Week($year, $month, $day), "\n"; }
それを実行してみる。
% ./number_of_week.pl 2009-11-01 2009-11-30 2009-11-01 44 7 2009-11-02 45 1 2009-11-03 45 2 2009-11-04 45 3 2009-11-05 45 4 2009-11-06 45 5 2009-11-07 45 6 2009-11-08 45 7 2009-11-09 46 1 2009-11-10 46 2 2009-11-11 46 3 2009-11-12 46 4 2009-11-13 46 5 2009-11-14 46 6 2009-11-15 46 7 2009-11-16 47 1 2009-11-17 47 2 2009-11-18 47 3 2009-11-19 47 4 2009-11-20 47 5 2009-11-21 47 6 2009-11-22 47 7 2009-11-23 48 1 2009-11-24 48 2 2009-11-25 48 3 2009-11-26 48 4 2009-11-27 48 5 2009-11-28 48 6 2009-11-29 48 7 2009-11-30 49 1
注意点
- 月曜日を週の初めとして数えているため、月曜日が「1」になり、日曜日が「7」になる。
(日本では日曜日が一般的なので、注意) - 週の数え上げは「0」から始まる。
参考
% ./number_of_week.pl 2009-12-30 2010-01-02 2009-12-30 53 3 2009-12-31 53 4 2010-01-01 0 5 2010-01-02 0 6 % ./number_of_week.pl 2010-01-01 2010-01-02 2010-01-01 0 5 2010-01-02 0 6