BusinessDaysAfter 関数
カテゴリー : 日付計算結果のデータタイプ : 日付
対応FileMakerバージョン :
作者 : 社本修司 株式会社ジェネコム
概要
開始日から営業日数後の日付を返します。構文
BusinessDaysAfter ( 開始日 ; 営業日数 )
引数
| 引数名 | タイプ | 備考 | 例 |
|---|---|---|---|
| 開始日 | 日付 | 2009.5.1 | |
| 営業日数 | 数字 | 5 |
例
BusinessDaysAfter ( "2009.05.01" ; 5 )
結果
2009.05.11
式
/*==============================================================
カスタム関数 BusinessDaysAfter ( 開始日 ; 営業日数 )
開始日から営業日数後の日付を返します。
例えば、日曜日祝日のみを休みとした場合の2009年5月1日(金)の5営業日後は、
2009年5月11日(月)となります。
5月2日(土)……1営業日後
5月3日(憲法記念日)……休み
5月4日(みどりの日)……休み
5月5日(こどもの日)……休み
5月6日(振替休日)……休み
5月7日(木)……2営業日後
5月8日(金)……3営業日後
5月9日(土)……4営業日後
5月10日(日)……休み
5月11日(月)……5営業日後
このカスタム関数を引用するに当たっては、必ずコメントも一緒に引用してください。
=============================================================*/
Let (
[
theDATE = 開始日 ;
DAYS = 営業日数 ;
//----------------------------------------------------------------------
// 上で定義した theDate を休日判定する
// 休みの基準を変える場合は以下の式を変更すること
// 祝日の判定に HolidayJ 関数(カスタム関数)を使用
// HappyMonday 関数(カスタム関数)を利用すると第2第4土曜日は休みとかいう条件も
// シンプルな式で計算できる
// HolidayJ 関数・HappyMonday 関数は <http://www.FMPro.jp> を参照のこと
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// 1.日曜日・祝日の場合を休みとする場合
//----------------------------------------------------------------------
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
)
//----------------------------------------------------------------------
// 2.日曜日・祝日に加え、第2第4土曜日も休みの場合のサンプル計算式
//----------------------------------------------------------------------
/*
Y = Year ( theDate ) ;
M = Month ( theDate ) ;
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
or ( theDate = HappyMonday ( 2 ; "土" ; M ; Y ) ) // 第2土曜日
or ( theDate = HappyMonday ( 4 ; "土" ; M ; Y ) ) // 第4土曜日
)
*/
//----------------------------------------------------------------------
// 3. 銀行休日の場合のサンプル計算式 (土日祝と年末・年始の12/31〜1/3)
//----------------------------------------------------------------------
/*
Y = Year ( theDate ) ;
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
or ( DayOfWeek ( theDate ) = 7 ) // 土曜日
or ( theDate = Date ( 12 ; 31 ; Y ) ) // 年末
or ( theDate = Date ( 1 ; 2 ; Y ) ) // 年始 1月1日はHolidayJで判定済み
or ( theDate = Date ( 1 ; 3 ; Y ) ) //
)
*/
] ;
Case (
DAYS ≥ 1 ;
BusinessDaysAfter ( theDATE + 1 ; DAYS - BD ) ;
Case (
BD ;
theDATE ;
BusinessDaysAfter ( theDATE + 1 ; DAYS - BD )
)
)
)
カスタム関数 BusinessDaysAfter ( 開始日 ; 営業日数 )
開始日から営業日数後の日付を返します。
例えば、日曜日祝日のみを休みとした場合の2009年5月1日(金)の5営業日後は、
2009年5月11日(月)となります。
5月2日(土)……1営業日後
5月3日(憲法記念日)……休み
5月4日(みどりの日)……休み
5月5日(こどもの日)……休み
5月6日(振替休日)……休み
5月7日(木)……2営業日後
5月8日(金)……3営業日後
5月9日(土)……4営業日後
5月10日(日)……休み
5月11日(月)……5営業日後
このカスタム関数を引用するに当たっては、必ずコメントも一緒に引用してください。
=============================================================*/
Let (
[
theDATE = 開始日 ;
DAYS = 営業日数 ;
//----------------------------------------------------------------------
// 上で定義した theDate を休日判定する
// 休みの基準を変える場合は以下の式を変更すること
// 祝日の判定に HolidayJ 関数(カスタム関数)を使用
// HappyMonday 関数(カスタム関数)を利用すると第2第4土曜日は休みとかいう条件も
// シンプルな式で計算できる
// HolidayJ 関数・HappyMonday 関数は <http://www.FMPro.jp> を参照のこと
//----------------------------------------------------------------------
//----------------------------------------------------------------------
// 1.日曜日・祝日の場合を休みとする場合
//----------------------------------------------------------------------
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
)
//----------------------------------------------------------------------
// 2.日曜日・祝日に加え、第2第4土曜日も休みの場合のサンプル計算式
//----------------------------------------------------------------------
/*
Y = Year ( theDate ) ;
M = Month ( theDate ) ;
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
or ( theDate = HappyMonday ( 2 ; "土" ; M ; Y ) ) // 第2土曜日
or ( theDate = HappyMonday ( 4 ; "土" ; M ; Y ) ) // 第4土曜日
)
*/
//----------------------------------------------------------------------
// 3. 銀行休日の場合のサンプル計算式 (土日祝と年末・年始の12/31〜1/3)
//----------------------------------------------------------------------
/*
Y = Year ( theDate ) ;
BD =
not (
( not IsEmpty ( HolidayJ ( theDate ) ) ) // 祝日
or ( DayOfWeek ( theDate ) = 1 ) // 日曜日
or ( DayOfWeek ( theDate ) = 7 ) // 土曜日
or ( theDate = Date ( 12 ; 31 ; Y ) ) // 年末
or ( theDate = Date ( 1 ; 2 ; Y ) ) // 年始 1月1日はHolidayJで判定済み
or ( theDate = Date ( 1 ; 3 ; Y ) ) //
)
*/
] ;
Case (
DAYS ≥ 1 ;
BusinessDaysAfter ( theDATE + 1 ; DAYS - BD ) ;
Case (
BD ;
theDATE ;
BusinessDaysAfter ( theDATE + 1 ; DAYS - BD )
)
)
)
エンコードは Unicode (UTF-8)、改行タイプは LF (Unix) 形式のテキストとして保存します。
テキストエディタで正常に開かない場合は、エンコードを指定してファイルを開くようにしてください。
詳細説明
開始日と営業日数を指定することで、営業日数後の日付を返します。祝日の判定にHolidayJ関数(カスタム関数)を使用しています。
例えば、日曜日祝日のみを休みとした場合の2009年5月1日(金)の5営業日後は、
2009年5月11日(月)となります。
5月2日(土)……1営業日後
5月3日(憲法記念日)……休み
5月4日(みどりの日)……休み
5月5日(こどもの日)……休み
5月6日(振替休日)……休み
5月7日(木)……2営業日後
5月8日(金)……3営業日後
5月9日(土)……4営業日後
5月10日(日)……休み
5月11日(月)……5営業日後
休みの定義はサンプルを元に適宜修正してください。
※ BusinessDays 関数は開始日・終了日ともに営業日数に加えるようになっていますが、この関数では開始日は起算日としているため日数には加わっていません。
この関数が使用する他のカスタム関数
- HolidayJ 関数
- HappyMonday 関数
この関数を使用する他のカスタム関数
- なし
フィードバック
この関数について何かお気づきの点がありましたら、お気づきの点、ご意見、ご感想などをお知らせください。FMPro.jp 事務局経由でカスタム関数の作者に転送させていただきます。なお、いただいたフィードバックにつきましては、FMPro.jp 事務局から個別にご返信を差し上げておりません。あらかじめご了承いただくようお願いいたします。
注意:ここで紹介されているカスタム関数をご自分のシステムに組み込んだ場合に発生した問題についてはFMPro.jpは責任を負いません。