予定を立てるときに、作業できる日数を知りたい場合があります。単なる日付計算機を使う場合、正確な日数を数えるのが大変です。そこで、指定日までの営業日を数えるプログラムを作ってみましょう。

  • 営業日の日数を計算するツールを作ろう

    営業日の日数を計算するツールを作ろう

簡単な日付計算について

最初に二つの日付を与えて、その日数を計算する簡単なプログラムを作ってみましょう。日本語プログラミング言語「なでしこ」には、『日数差』という名前の日付計算のための関数が用意されています。

例えば、「2025/04/10」から「2025/08/10」までの日数を調べるには、以下のようなプログラムを記述します。

「2025/04/10」から「2025/08/10」の日数差を表示。 

こちら( https://nadesi.com/v3/start )から、なでしこ3簡易エディタを開いて、上記プログラムをコピーして、エディタに貼り付けたら「▶ 実行」ボタンを押してみましょう。実行すると、下記のように「122」と表示されるので、単純に122日あることが分かります。

  • 「日数差」関数を利用したところ

    「日数差」関数を利用したところ

営業日を数えるには?

次に、営業日を数えることにしましょう。残念ながら、なでしこには営業日を数える関数は用意されていません。そもそも、営業日の定義は、その事業所によって異なります。そのため、正確な営業日の日数を調べるには、その事業所ごとのルールを確認する必要があります。

ここでは、営業日を数える例として、水曜と金曜が休みの事業所を例にしてみましょう。接客業を営んでいるお店では、週末を休みにできないので、週中の特定の曜日を休みにしていることがあります。

このような場合、以下のようなプログラムを作って、一日ごとに曜日を調べて、営業日かどうかを確かめた上で、日数をカウントできます。下記は、水曜日と金曜日が休みのお店の営業日数を計算するプログラムです。

# --- 設定 ---
開始日=「2025/04/10」
終了日=「2025/08/10」
営業曜日=「月火木土日」
# 総日数を計算
総日数=開始日から終了日の日数差
# 営業日数を計算
営業日数=0
F日付=開始日
1から総日数まで繰り返す:
  W=F日付の曜日。
  I=営業曜日でWが何文字目。
  もし、I≧1ならば:
    営業日数=営業日数+1
    「{F日付}({W})」を表示
  F日付=F日付に「0/0/1」を日付加算。
「■ 総日数は: {総日数}日です」と表示。
「■ 営業日は: {営業日数}日です」と表示。

プログラムを実行すると、次の画像のように87日の営業日があることが分かりました。営業日を全てコンソールに出力するため、コンソールをスクロールして最後まで見ると結果が表示されます。

  • プログラムを作って営業日数を計算したところ

    プログラムを作って営業日数を計算したところ

このプログラムは、基本的にはカレンダーを見て、1日ずつ数えていくのと同じなのです。具体的には、繰り返し文の中で、対象となる日付を1日ずつ加算していって、営業している曜日かを調べて、営業日なら変数「営業日数」を1ずつ加算するというプログラムになっています。

アプリとして誰でも使えるように整えよう

正しくプログラムが動くことが確認できたら、アプリとして誰でも使えるように整えましょう。ブラウザのフォームに開始日・終了日・営業曜日を記述して実行すると、営業日数を調べて表示するツールを作ってみましょう。こちら( https://n3s.nadesi.com/id.php?3003 )にもプログラムをアップロードしています。

# --- 初期値の設定 ---
開始日=「{今日}」
終了日=開始日に「0/0/90」を日付加算。
営業曜日=「月火木土日」
# --- 入力フォームを作成 ---
FF={}の「
開始日=?date={開始日}
終了日=?date={終了日}
営業曜日={営業曜日}
」をフォーム作成。
計算ボタン=「計算」のボタン作成。改行作成。
結果ラベル=「---」のラベル作成。
計算ボタンをクリックした時には:
  FFのフォーム入力一括取得してFに代入。
  開始日=F@「開始日」
  終了日=F@「終了日」
  営業曜日=F@「営業曜日」
  開始日から終了日まで営業曜日で営業日計算
  結果ラベルにそれをHTML設定。

●(開始日から終了日まで営業曜日で)営業日計算とは:
  # 総日数を計算
  総日数=開始日から終了日の日数差
  # 営業日数を計算
  営業日数=0
  F日付=開始日
  1から総日数まで繰り返す:
    W=F日付の曜日
    I=営業曜日でWが何文字目。
    もし、I≧1ならば:
      営業日数=営業日数+1
    F日付=F日付に「0/0/1」を日付加算。
  それは「総日数は{総日数}日/営業日は {営業日数}日です」

簡易エディタでプログラムを実行してみましょう。すると、次の画面のように表示されます。日付や営業曜日を指定して「計算」ボタンを押すと営業日の日数を計算できます。

  • ツールとして仕上げたところ

    ツールとして仕上げたところ

まとめ

以上、今回は、営業日数を計算するプログラムを作ってみました。最初に「日数差」関数を使って、日付を計算しておいて、その後、一日ずつ曜日を調べて営業日か確かめることで計算することができました。

ただし、このプログラムでは、祝日を考慮していません。祝日をお休みする事業所では、さらに祝日の日数を減らす処理を入れなければなりません。祝日は、毎年異なり、内閣府のページ( https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html )で公開されています。原稿執筆時点で2年分(2026年まで)の一覧が掲載されていました。このデータを元にして、計算するように改造してみると良いでしょう。挑戦してみてください。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。直近では、「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」「すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応(ソシム)」「マンガでざっくり学ぶPython(マイナビ出版)」など。