20/06/13 11:52:25.11 P7Ehsk1I.net
>>837 Perl5、こういうプログラムでは日にち曜日計算を自分で考える前に、いつも使っているモジュールの利用をすぐ思い浮かんでしまう
for (qw{02 03 07 10 14 17 21 24 28 30 31}) {
$date = "2020-05-$_";
$t = Time::Piece->strptime($date, '%Y-%m-%d');
$n = 1 + int($t->mday / 7);
$dw = $n . $t->day(qw{日 月 火 水 木 金 土});
$t1 = $t - ONE_DAY * ($t->mday - 1);
$wk = 1 + int(($t->mday + $t1->_wday - 1) / 7);
print "$date: 第$wk週目の第$dw曜日です。\n";
}
実行結果
~ $ perl 17_834_date_week_day.pl
2020-05-02: 第1週目の第1土曜日です。
2020-05-03: 第2週目の第1日曜日です。
2020-05-07: 第2週目の第2木曜日です。
2020-05-10: 第3週目の第2日曜日です。
2020-05-14: 第3週目の第3木曜日です。
2020-05-17: 第4週目の第3日曜日です。
2020-05-21: 第4週目の第4木曜日です。
2020-05-24: 第5週目の第4日曜日です。
2020-05-28: 第5週目の第5木曜日です。
2020-05-30: 第5週目の第5土曜日です。
2020-05-31: 第6週目の第5日曜日です。