予定を立おるずきに、䜜業できる日数を知りたい堎合がありたす。単なる日付蚈算機を䜿う堎合、正確な日数を数えるのが倧倉です。そこで、指定日たでの営業日を数えるプログラムを䜜っおみたしょう。

  • 営業日の日数を蚈算するツヌルを䜜ろう

    営業日の日数を蚈算するツヌルを䜜ろう

簡単な日付蚈算に぀いお

最初に二぀の日付を䞎えお、その日数を蚈算する簡単なプログラムを䜜っおみたしょう。日本語プログラミング蚀語「なでしこ」には、『日数差』ずいう名前の日付蚈算のための関数が甚意されおいたす。

䟋えば、「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(マむナビ出版)」など。