ゼロからはじめてみる日本語プログラミング「なでしこ」 第90回 指定日までの営業日の日数を数えるツールを作ろう
2025年4月11日(金)10時41分 マイナビニュース
予定を立てるときに、作業できる日数を知りたい場合があります。単なる日付計算機を使う場合、正確な日数を数えるのが大変です。そこで、指定日までの営業日を数えるプログラムを作ってみましょう。
○簡単な日付計算について
最初に二つの日付を与えて、その日数を計算する簡単なプログラムを作ってみましょう。日本語プログラミング言語「なでしこ」には、『日数差』という名前の日付計算のための関数が用意されています。
例えば、「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 )にもプログラムをアップロードしています。
.