役所や病院などで「90日後にまた来てください」と言われて、すぐに90日後の日付を計算できる人はそれほど多くないのではないでしょうか。日付の計算は複雑です。なぜなら毎月の日数が異なる上に、うるう年などの例外もあるからです。そこで、プログラムを作って気軽に日数を計算できるようにしましょう。

  • 日付計算機を作ってみよう

    日付計算機を作ってみよう

今日の90日後を計算するプログラム

それでは、早速、なでしこを使って、90日後を計算するプログラムを作ってみましょう。なでしこには、日時計算のためのいろいろな命令が揃っているので、難しいことはありません。

なでしこ3のマニュアルの「命令一覧」から「日時処理」の項目を開いてみましょう。すると、二つの日付の差を調べる「日数差」命令や、特定の日時に日数を加算する「日時加算」という命令が見つかります。これを使う事で簡単に日付計算ができそうだと分かるでしょう。

  • なでしこ3で日時処理の命令一覧

    なでしこ3で日時処理の命令一覧

それでは、プログラムを作ってみましょう。ブラウザで「なでしこ3簡易エディタ」を開いたら、以下のようなプログラムを入力してみましょう。ここでは分かりやすく2022年1月1日の90日後を調べてみましょう。

「2022/01/01」に「90日」を日時加算して表示。

実行ボタンを押すと、次のように表示されます。

  • 「日時加算」命令を使って90日後を表示したところ

    「日時加算」命令を使って90日後を表示したところ

「日時加算」命令の第二引数に「90日」を指定しており、これによって90日後の日付を調べることができます。

今日から2週間後の日付を調べよう

次に、今日から2週間後の日付を調べたい場合には、どうしたら良いでしょうか。以下のようになります。

今日を表示。
今日に「14日」を日時加算して表示。

プログラムを実行すると次のように表示されます。もちろん、以下は原稿執筆時の実行結果であり、プログラムを実行した日付を起点して2週間後を表示します。

  • プログラムを実行した日から2週間後を表示

    プログラムを実行した日から2週間後を表示

「日付加算」命令を使う方法

ほかにも、日時ではなく日付の加算に特化した「日付加算」命令もあります。この命令を使う場合には、第二引数に加算したい「年/月/日」と3項目を指定します。

以下のプログラムは「2022/01/01」の14日後を計算するプログラムです。

「2022/01/01」に「0/0/14」を日付加算して表示。

上記のプログラムを実行すると以下のように表示されます。

  • 「日付加算」命令を使ったところ

    「日付加算」命令を使ったところ

入力ボックスで日付を指定できるようにしよう

いずれも一行のプログラムで課題を解くことができました。しかし、プログラムを直接書き換えるというのは、敷居が高い行為でもあります。そこで入力ボックスに値を入力して、N日後を指定できるようにしてみましょう。

以下のプログラムを簡易エディタに貼り付けて実行してみましょう。もしプログラムが崩れてしまう場合は、こちらからコピーしてみてください。

# === N日後を計算する日付計算機 ===
# 入力フォームを作成 --- (*1)
「基本となる日付:」のラベル作成。改行作成。
日付エディタ=(今日)のエディタ作成。改行作成。
「何日後か:」のラベル作成。改行作成。
加算エディタ=「90」のエディタ作成。改行作成。
計算ボタン=「日付計算」のボタン作成。改行作成。
答えラベル=「***」のラベル作成。

# ボタンを押した時 --- (*2)
計算ボタンをクリックした時には
  # エディタからテキストを取得する --- (*3)
  F日付=日付エディタからテキスト取得。
  F加算=加算エディタからテキスト取得。
  # 計算する --- (*4)
  F日付に「{F加算}日」を日時加算してF答えに代入。
  # 答えに設定 --- (*5)
  答えラベルにF答えをテキスト設定。
ここまで。
# 装飾の指定
DOM親要素に{"背景色": "#fff0f0","文字サイズ": "20px"}をDOMスタイル一括設定。

プログラムを実行してみましょう。すると、以下のように表示されます。基本となる日付と何日後かをエディタに入力して「日付計算」のボタンを押してみましょう。すると、日付が計算されて表示されます。

  • 日付計算機を実行したところ

    日付計算機を実行したところ

プログラムを確認してみましょう。(*1)の部分では、画面を構成するフォームの部品を作成します。「ラベル作成」や「エディタ作成」「ボタン作成」「改行作成」などの命令を利用して、画面に部品を作成します。

そして、(*2)では計算ボタンをクリックした時の処理を記述します。「**をクリックした時には ... ここまで。」のように書くと、部品をクリックした時の処理を記述できます。

(*3)では(*1)の部分で作成したエディタ部品からテキストを取得します。(*4)では「日時加算」命令を利用してN日後の日付を計算します。そして、(*5)で答えのラベルに計算結果を設定します。

まとめ

以上、今回は日付計算の方法について紹介しました。ちょっと日付を計算したいという場合に、なでしこの簡易エディタをブラウザで開いて簡単なプログラムを書くことで気軽に計算できるので便利です。

さらに。上記のプログラムを、なでしこ3貯蔵庫に書き込んでおけば、スマートフォンやタブレットから使うことも可能です。ちょっと便利なツール作成に、なでしこを活用してみてください。

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