月半ばの引っ越しや、使用料金の年度半ばでの解約の際には、保険料や利用料金を利用した日数で割る日割り計算が一般的です。しかし、月によって日数が違うため、月を跨いだ精算では計算間違いが起こりやすくなります。間違っていてもなかなか気づけません。そこで、簡単に日割り計算ができる専用ツールを作って、間違いを防ぎましょう。

なでしこは日付計算が簡単!

今回の日割り計算ツールを作るのには、日付計算の命令を使います。ある日付から別の日付までの日数差を求めて画面に表示するには、以下のように記述します。

「2023/10/15」から「2023/11/10」までの日数差を表示。

実際の上記のプログラムを試すには、ブラウザでこちらの「なでしこ簡易エディタ」にアクセスします。上記のプログラムをコピーして、エディタに貼り付けます。そして「実行」ボタンをクリックします。

  • 日数差を計算したところ

なでしこのプログラムは、全てブラウザ上で動作します。計算内容をサーバーに送信したりしないので、安心して計算できます。

利用料金の1日分の金額を計算してみよう

さて、日付Aから日付Bまでの日数差を調べるには、「日数差」を使えば良いのです。ただし、『「2023/11/01」から「2023/11/01」までの日数差』を計算すると、答えは0になります。同じ日から同じ日を引くので差は0になります。そのため、使用料金を計算する際には、日数差で求めた値に+1する必要があります。

それでは、「日数差」命令を使って、なでしこで日割り計算をしてみると、次のようなプログラムになります。

# --- 料金と日付を指定 ---
F利用料金は50000
「2023/10/15」から「2023/10/18」までの日数差をF日数に代入。
# --- 日割り料金を計算 ---
F日数 = F日数 + 1
F利用料金をF日数で割って、切り上げして、F日割り料金に代入。
# --- 結果を表示 ---
「{通貨形式(F利用料金)}円÷{F日数}日={通貨形式(F日割り料金)}円」を表示。

同じく「なでしこ簡易エディタ」で実行してみると、次のように表示されます。

  • 利用料金を計算したところ

上記のプログラムを見ると、そのまま読めるので、間違いがあれば、すぐに気付きます。敢えて、「割る」「切り上げる」という命令を日本語風に書きましたが、計算式を明確にしたい場合は次のように書き換えることもできます。

# --- 料金と日付を指定 ---
F利用料金 = 50000
F日数 = 「2023/10/15」から「2023/10/18」までの日数差
# --- 日割り料金を計算 ---
F日数 = F日数 + 1
F日割り料金 = 切り上げ(F利用料金÷F日数)
# --- 結果を表示 ---
「{通貨形式(F利用料金)}円÷{F日数}日={通貨形式(F日割り料金)}円」を表示。

プログラミングを少しかじったことがあれば、この計算式の形式で書くのが分かりやすく感じるかもしれません。なでしこでは、日本語風に書くこともできますし、このようにプログラミング言語風に書くこともできます。

もっと使いやすくHTMLのフォームを使ってみよう

なお、業務で日割り計算ツールを作ろうと思った場合に、毎回上記のようなプログラムを入力するのは面倒です。入力エディタが表示されて、そこに日付と金額を指定するだけで計算できるようにしたいものです。

なでしこでは「ボタン作成」や「エディタ作成」という命令が備わっていて、これを使う事で入力パーツを作成できます。とは言え、今回のように、開始日、終了日、金額と入力部品が多い場合には、一括で入力パーツを作成できる「フォーム作成」命令が便利です。

以下は、「フォーム作成」を使って一気に入力パーツを4つ(開始日、終了日、金額)を作る例です。

FF=空の「
開始日={今年}/01/01
終了日={今日}
金額=50000
丸め方法=?(切り上げ|四捨五入)
」をフォーム作成。

上記を実行すると、下記のような4つの入力フォームが作成されます。

  • 「フォーム作成」命令を使ったところ

「フォーム入力」命令の第二引数に対して、「入力項目=初期値{改行}入力項目=初期値…」のように記述することで、いくつでも入力パーツを追加できるので便利です。なお、上記を見ると分かるとおり「項目=?(選択肢A|選択肢B)」のように指定すると、セレクトボックスを使って選べるようになります。

そして、入力したデータを、プログラムで取得するには、「フォーム入力一括取得」命令を使います。例えば、フォームの下に「計算」ボタンを作成し、それをクリックしたら入力された値を表示するプログラムは、次のようになります。

FF=空の「
開始日={今年}/01/01
終了日={今日}
金額=50000
丸め方法=?(切り上げ|四捨五入)
」をフォーム作成。

計算ボタン=「計算」のボタン作成。
計算ボタンをクリックした時には
  FFのフォーム入力一括取得してFに代入。
  D1 = F["開始日"]
  D2 = F["終了日"]
  金額 = F["金額"]
  「{D1}から{D2}までの日数差を{金額}で割ります。」と表示。
ここまで。

プログラムを実行すると、フォームに記入した値を取り出して表示します。

  • フォームから入力データを取り出したところ

フォームを使って日割り計算ツールを完成させよう

以上の説明で「フォーム入力」の使い方が分かったでしょうか。それでは、「計算」ボタンを押した時の部分に、日割り計算をする計算式を書き込んで、日割り計算ツールを完成させてみましょう。

# --- 日割り計算ツール --- (*1)
「<h3>日割り計算ツール(年間)</h3>」のラベル作成。
FF=空の「
開始日={今年}/01/01
終了日={今日}
金額=50000
丸め方法=?(切り上げ|四捨五入)
」をフォーム作成。
計算ボタン=「計算」のボタン作成。改行作成。
L=「」のラベル作成。
# --- 「計算」ボタンをクリックした時の処理を記述 --- (*2)
計算ボタンをクリックした時には
  FFのフォーム入力一括取得してFに代入。
  D1 = F["開始日"]
  D2 = F["終了日"]
  金額 = F["金額"]
  D1を「/」で区切ってDDDに代入。FY=DDD[0]
  今年日数=(「{FY}/01/01」から「{FY}/12/31」の日数差)+1。
  D1からD2までの日数差をF日数に代入。
  F日数=F日数+1
  V = 金額×( F日数/今年日数)
  M = F["丸め方法"]
  もし、M=「切り上げ」ならば
    V2 = Vを切り上げ
  違えば、もし、M=「四捨五入」ならば
    V2 = Vを四捨五入
  ここまで。
  日額=金額/今年日数
  残り日数=今年日数 - F日数
  残金=金額 - V2
  # 結果を表示 --- (*3)
  Lに「<h3>計算結果:</h3>
<u>{D1}</u>から<u>{D2}</u>まで<b>{F日数}日</b><br>
{FY}年は{今年日数}日なので、残り日数は{残り日数}日<br>
{通貨形式(金額)}の日割り額は、{V}円<br>
{M}すると、<b>{通貨形式(V2)}円</b>です。<br>
一日当たり:{日額}円です。
」をテキスト設定。
ここまで。

上記のプログラムを実行すると、下記のように日付計算ツールが動作します。

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら