Top image

Perl Monk

主にPerlとRaspberryPiの個人的技術研鑽

月の初めからカウントして、指定した日が第何の何曜日か計算するサブルーチン

2023/06/27 21:00
category:Perl

もっといい方法があると思うんだけど、何回その週が現れたかカウントアップしているだけです。

サブルーチンの引数をチェックする部分は考慮していません。

ChatGPTで色々学習させて作らせてみたけど、どうにもちゃんと動くものがなぜか出来なかったので仕方なく・・・。

#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
my $year = 2023;
my $mon = 6;
my $day = 21;
my @days_of_week = qw(日 月 火 水 木 金 土);
my ($week_count,$week_no) = week_count($year,$mon,$day);
if ( defined $week_count and defined $week_no ) {
	print "$year年$mon月$day日は、第$week_count $days_of_week[$week_no]曜日です\n";
}
sub week_count {
	my ($year,$mon,$day) = @_;
	my $week_count;
	my $week_no;
	for ( my $i = 1 ; $i <= $day ; $i++ ) {
		my $time = timelocal(0,0,0,$i,$mon-1,$year-1900);
		my $week = (localtime($time))[6];
		$week_count->[$week]++;
		if ( $i == $day ) {
			$week_count = $week_count->[$week];
			$week_no = $week;
			last;
		}
	}
	return($week_count,$week_no);
}

■実行結果

2023年6月21日は、第3 水曜日です