ATコラム

2024.12.03

IT

ライトコースのkintoneの小アイデア② 1か月後の同日を求める方法

kintoneでは時間計算が「秒単位」で行われるため、数日後の日付を求める場合には問題ありませんが、「数か月後の同日」や「数年後の同日」を求める際には、大の月や小の月、うるう年を考慮しないため、正確な日付を求めることができません。

 

例えば、1月15日の1か月後の同日を求める際に、30日後として計算すると、1月が「大の月」であるため2月14日となってしまいます。

このようなkintoneの特性を回避して、1か月後の同日を求める方法として、以下の対応を行います。

用意するもの

  1. 元の日付 フィールド(日付フィールドタイプ)(入力用)
  2. 元の日付の年 フィールド(計算フィールドタイプ)(元の日付の年部分を取り出す)
  3. 元の日付の月 フィールド(計算フィールドタイプ)(元の日付の月部分を取り出す)
  4. 元の日付の日 フィールド(計算フィールドタイプ)(元の日付の日部分を取り出す)
  5. 元の日付の翌年 フィールド(計算フィールドタイプ)(翌月の年を計算)
  6. 元の日付の翌月 フィールド(計算フィールドタイプ)(翌月を計算)
  7. 翌月日 フィールド(文字列(1行)フィールドタイプ)(1か月後の日付を表示)

各計算式

  1. DATE_FORMAT(元の日付,"YYYY","Etc/GMT")
  2. DATE_FORMAT(元の日付,"M","Etc/GMT")
  3. DATE_FORMAT(元の日付,"d","Etc/GMT")
IF(AND(元の日付の年 = 2024, 元の日付の月 = 12), 2025,
IF(AND(元の日付の年 = 2024, 元の日付の月 <> 12), 2024,
IF(AND(元の日付の年 = 2025, 元の日付の月 = 12), 2026,
IF(AND(元の日付の年 = 2025, 元の日付の月 <> 12), 2025,
IF(AND(元の日付の年 = 2026, 元の日付の月 = 12), 2027,
IF(AND(元の日付の年 = 2026, 元の日付の月 <> 12), 2026,
:
:(適宜20年先くらいまで用意)
:””))))))
  1. IF(元の日付の月 <= 11, 元の日付の月 + 1, 1)
  2. 元の日付の翌年 & "-" & 元の日付の翌月 & "-" & 元の日付の日

この方法では、元の日付の年と月と日を計算フィールドに取り出すことで、数年後や数か月後の同日を正確に求めることができます。

 

ただし、④の計算式がハードコードになっているため、アプリの使用期間が長くなると計算式の修正が必要になります。