指定期日から指定営業日の年、月、日を返すライブラリ。
今は使っていないので一部改変して公開します。GPLライセンス。
他に必要なもの:
・呼び出し元CGI - サンプルはこちら
・休日判定ライブラリ - futomiさんのライブラリ
スポンサードリンク
businessday.pl
##############################################################################
# 指定期日から指定営業日の年、月、日を返す
##############################################################################
#
# [使い方]
# my($Y, $M, $D) = &AfterBusinessDay(today, $AddBusinessDay);
# today = 2005-04-28
# AddBusinessDay = 3
# Ex.Ans. -> 2005.05.06
#
# [宣 言]
# use Time::Local;
# use Date::Simple;
# require './businessday.pl';
#
# [戻り値]
# 指定期日後の「年」「月」「日」
#
# [著作者]
# CASEY 2005-2008
#
# [履 歴]
# Ver.0.00 2005.04.04 プロトタイプ
# Ver.0.01 2005.04.05 バグフィックス
# Ver.0.02 2005.04.06 perl library
# Ver.0.03 2008.02.05 公開
sub AfterBusinessDay{
my($day, $AddBusinessDay) = @_;
my $tF = date($day);
# 検索開始
my $cnt = 0; # 営業日カウント
my $i = 0; # ループカウント
my $flg = 0; # 休日フラグ
my $check;
for(;;){
# 初期化
$flg = 0;
# 対象日の設定=今日からカウント日後
$check = $tF + $i;
# 日付フォーマットの変更
my($cY, $cM, $cD) = split(/-/, $check);
# 休日かどうか調べる(土曜含む)
# 追加すべきは社で定める休日のみ
$flg = &CheckHoliday($cY, $cM, $cD);
# 休日でなければ営業日カウント
$cnt++ unless $flg;
# カウント=日後営業日なら終了
return ($cY, $cM, $cD) if($AddBusinessDay == $cnt)
# 翌日を計算する準備
$i++;
# リミッタ
return (undef, undef, undef) if(100 <= $i)
}
}
1;

コメント