PR

businessday.pl – ○日後の営業日を求める

指定期日から指定営業日の年、月、日を返すライブラリ。

今は使っていないので一部改変して公開します。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;

コメント